Testing with TEST_LENGTH = 27 test _bit_byte, _bit_mask, and bitstr_size i _bit_byte(i) _bit_mask(i) bitstr_size(i) 0 0 1 0 1 0 2 1 2 0 4 1 3 0 8 1 4 0 16 1 5 0 32 1 6 0 64 1 7 0 128 1 8 1 1 1 9 1 2 2 10 1 4 2 11 1 8 2 12 1 16 2 13 1 32 2 14 1 64 2 15 1 128 2 16 2 1 2 17 2 2 3 18 2 4 3 19 2 8 3 20 2 16 3 21 2 32 3 22 2 64 3 23 2 128 3 24 3 1 3 25 3 2 4 26 3 4 4 test bit_alloc, clearbits, bit_ffc, bit_ffs be: 0 -1 000000000000000000000000000 is: 0 -1 000000000000000000000000000 test bit_set be: 1 0 100100100100100100100100100 is: 1 0 100100100100100100100100100 test bit_clear be: 0 3 000100000100000100000100000 is: 0 3 000100000100000100000100000 test bit_test using previous bitstring i bit_test(i) 0 0 1 0 2 0 3 8 4 0 5 0 6 0 7 0 8 0 9 2 10 0 11 0 12 0 13 0 14 0 15 128 16 0 17 0 18 0 19 0 20 0 21 32 22 0 23 0 24 0 25 0 26 0 test clearbits be: 0 -1 000000000000000000000000000 is: 0 -1 000000000000000000000000000 test bit_nset and bit_nclear be: 0 1 011111111111111111111111110 is: 0 1 011111111111111111111111110 be: 0 1 010000000000000000000000010 is: 0 1 010000000000000000000000010 be: 0 -1 000000000000000000000000000 is: 0 -1 000000000000000000000000000 be: 26 0 111111111111111111111111110 is: 26 0 111111111111111111111111110 be: 0 -1 000000000000000000000000000 is: 0 -1 000000000000000000000000000 first 1 bit should move right 1 position each line 0 -1 0 111111111111111111111111111 1 0 1 011111111111111111111111111 2 0 2 001111111111111111111111111 3 0 3 000111111111111111111111111 4 0 4 000011111111111111111111111 5 0 5 000001111111111111111111111 6 0 6 000000111111111111111111111 7 0 7 000000011111111111111111111 8 0 8 000000001111111111111111111 9 0 9 000000000111111111111111111 10 0 10 000000000011111111111111111 11 0 11 000000000001111111111111111 12 0 12 000000000000111111111111111 13 0 13 000000000000011111111111111 14 0 14 000000000000001111111111111 15 0 15 000000000000000111111111111 16 0 16 000000000000000011111111111 17 0 17 000000000000000001111111111 18 0 18 000000000000000000111111111 19 0 19 000000000000000000011111111 20 0 20 000000000000000000001111111 21 0 21 000000000000000000000111111 22 0 22 000000000000000000000011111 23 0 23 000000000000000000000001111 24 0 24 000000000000000000000000111 25 0 25 000000000000000000000000011 26 0 26 000000000000000000000000001 first 0 bit should move right 1 position each line 0 0 -1 000000000000000000000000000 1 1 0 100000000000000000000000000 2 2 0 110000000000000000000000000 3 3 0 111000000000000000000000000 4 4 0 111100000000000000000000000 5 5 0 111110000000000000000000000 6 6 0 111111000000000000000000000 7 7 0 111111100000000000000000000 8 8 0 111111110000000000000000000 9 9 0 111111111000000000000000000 10 10 0 111111111100000000000000000 11 11 0 111111111110000000000000000 12 12 0 111111111111000000000000000 13 13 0 111111111111100000000000000 14 14 0 111111111111110000000000000 15 15 0 111111111111111000000000000 16 16 0 111111111111111100000000000 17 17 0 111111111111111110000000000 18 18 0 111111111111111111000000000 19 19 0 111111111111111111100000000 20 20 0 111111111111111111110000000 21 21 0 111111111111111111111000000 22 22 0 111111111111111111111100000 23 23 0 111111111111111111111110000 24 24 0 111111111111111111111111000 25 25 0 111111111111111111111111100 26 26 0 111111111111111111111111110 first 0 bit should move left 1 position each line 0 -1 0 111111111111111111111111111 1 26 0 111111111111111111111111110 2 25 0 111111111111111111111111100 3 24 0 111111111111111111111111000 4 23 0 111111111111111111111110000 5 22 0 111111111111111111111100000 6 21 0 111111111111111111111000000 7 20 0 111111111111111111110000000 8 19 0 111111111111111111100000000 9 18 0 111111111111111111000000000 10 17 0 111111111111111110000000000 11 16 0 111111111111111100000000000 12 15 0 111111111111111000000000000 13 14 0 111111111111110000000000000 14 13 0 111111111111100000000000000 15 12 0 111111111111000000000000000 16 11 0 111111111110000000000000000 17 10 0 111111111100000000000000000 18 9 0 111111111000000000000000000 19 8 0 111111110000000000000000000 20 7 0 111111100000000000000000000 21 6 0 111111000000000000000000000 22 5 0 111110000000000000000000000 23 4 0 111100000000000000000000000 24 3 0 111000000000000000000000000 25 2 0 110000000000000000000000000 26 1 0 100000000000000000000000000 first 1 bit should move left 1 position each line 0 0 -1 000000000000000000000000000 1 0 26 000000000000000000000000001 2 0 25 000000000000000000000000011 3 0 24 000000000000000000000000111 4 0 23 000000000000000000000001111 5 0 22 000000000000000000000011111 6 0 21 000000000000000000000111111 7 0 20 000000000000000000001111111 8 0 19 000000000000000000011111111 9 0 18 000000000000000000111111111 10 0 17 000000000000000001111111111 11 0 16 000000000000000011111111111 12 0 15 000000000000000111111111111 13 0 14 000000000000001111111111111 14 0 13 000000000000011111111111111 15 0 12 000000000000111111111111111 16 0 11 000000000001111111111111111 17 0 10 000000000011111111111111111 18 0 9 000000000111111111111111111 19 0 8 000000001111111111111111111 20 0 7 000000011111111111111111111 21 0 6 000000111111111111111111111 22 0 5 000001111111111111111111111 23 0 4 000011111111111111111111111 24 0 3 000111111111111111111111111 25 0 2 001111111111111111111111111 26 0 1 011111111111111111111111111 0 bit should move right 1 position each line 0 0 1 011111111111111111111111111 1 1 0 101111111111111111111111111 2 2 0 110111111111111111111111111 3 3 0 111011111111111111111111111 4 4 0 111101111111111111111111111 5 5 0 111110111111111111111111111 6 6 0 111111011111111111111111111 7 7 0 111111101111111111111111111 8 8 0 111111110111111111111111111 9 9 0 111111111011111111111111111 10 10 0 111111111101111111111111111 11 11 0 111111111110111111111111111 12 12 0 111111111111011111111111111 13 13 0 111111111111101111111111111 14 14 0 111111111111110111111111111 15 15 0 111111111111111011111111111 16 16 0 111111111111111101111111111 17 17 0 111111111111111110111111111 18 18 0 111111111111111111011111111 19 19 0 111111111111111111101111111 20 20 0 111111111111111111110111111 21 21 0 111111111111111111111011111 22 22 0 111111111111111111111101111 23 23 0 111111111111111111111110111 24 24 0 111111111111111111111111011 25 25 0 111111111111111111111111101 26 26 0 111111111111111111111111110 1 bit should move right 1 position each line 0 1 0 100000000000000000000000000 1 0 1 010000000000000000000000000 2 0 2 001000000000000000000000000 3 0 3 000100000000000000000000000 4 0 4 000010000000000000000000000 5 0 5 000001000000000000000000000 6 0 6 000000100000000000000000000 7 0 7 000000010000000000000000000 8 0 8 000000001000000000000000000 9 0 9 000000000100000000000000000 10 0 10 000000000010000000000000000 11 0 11 000000000001000000000000000 12 0 12 000000000000100000000000000 13 0 13 000000000000010000000000000 14 0 14 000000000000001000000000000 15 0 15 000000000000000100000000000 16 0 16 000000000000000010000000000 17 0 17 000000000000000001000000000 18 0 18 000000000000000000100000000 19 0 19 000000000000000000010000000 20 0 20 000000000000000000001000000 21 0 21 000000000000000000000100000 22 0 22 000000000000000000000010000 23 0 23 000000000000000000000001000 24 0 24 000000000000000000000000100 25 0 25 000000000000000000000000010 26 0 26 000000000000000000000000001