Testing with TEST_LENGTH = 32 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 27 3 8 4 28 3 16 4 29 3 32 4 30 3 64 4 31 3 128 4 test bit_alloc, clearbits, bit_ffc, bit_ffs be: 0 -1 00000000000000000000000000000000 is: 0 -1 00000000000000000000000000000000 test bit_set be: 1 0 10010010010010010010010010010010 is: 1 0 10010010010010010010010010010010 test bit_clear be: 0 3 00010000010000010000010000010000 is: 0 3 00010000010000010000010000010000 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 27 8 28 0 29 0 30 0 31 0 test clearbits be: 0 -1 00000000000000000000000000000000 is: 0 -1 00000000000000000000000000000000 test bit_nset and bit_nclear be: 0 1 01111111111111111111111111111110 is: 0 1 01111111111111111111111111111110 be: 0 1 01000000000000000000000000000010 is: 0 1 01000000000000000000000000000010 be: 0 -1 00000000000000000000000000000000 is: 0 -1 00000000000000000000000000000000 be: 31 0 11111111111111111111111111111110 is: 31 0 11111111111111111111111111111110 be: 0 -1 00000000000000000000000000000000 is: 0 -1 00000000000000000000000000000000 first 1 bit should move right 1 position each line 0 -1 0 11111111111111111111111111111111 1 0 1 01111111111111111111111111111111 2 0 2 00111111111111111111111111111111 3 0 3 00011111111111111111111111111111 4 0 4 00001111111111111111111111111111 5 0 5 00000111111111111111111111111111 6 0 6 00000011111111111111111111111111 7 0 7 00000001111111111111111111111111 8 0 8 00000000111111111111111111111111 9 0 9 00000000011111111111111111111111 10 0 10 00000000001111111111111111111111 11 0 11 00000000000111111111111111111111 12 0 12 00000000000011111111111111111111 13 0 13 00000000000001111111111111111111 14 0 14 00000000000000111111111111111111 15 0 15 00000000000000011111111111111111 16 0 16 00000000000000001111111111111111 17 0 17 00000000000000000111111111111111 18 0 18 00000000000000000011111111111111 19 0 19 00000000000000000001111111111111 20 0 20 00000000000000000000111111111111 21 0 21 00000000000000000000011111111111 22 0 22 00000000000000000000001111111111 23 0 23 00000000000000000000000111111111 24 0 24 00000000000000000000000011111111 25 0 25 00000000000000000000000001111111 26 0 26 00000000000000000000000000111111 27 0 27 00000000000000000000000000011111 28 0 28 00000000000000000000000000001111 29 0 29 00000000000000000000000000000111 30 0 30 00000000000000000000000000000011 31 0 31 00000000000000000000000000000001 first 0 bit should move right 1 position each line 0 0 -1 00000000000000000000000000000000 1 1 0 10000000000000000000000000000000 2 2 0 11000000000000000000000000000000 3 3 0 11100000000000000000000000000000 4 4 0 11110000000000000000000000000000 5 5 0 11111000000000000000000000000000 6 6 0 11111100000000000000000000000000 7 7 0 11111110000000000000000000000000 8 8 0 11111111000000000000000000000000 9 9 0 11111111100000000000000000000000 10 10 0 11111111110000000000000000000000 11 11 0 11111111111000000000000000000000 12 12 0 11111111111100000000000000000000 13 13 0 11111111111110000000000000000000 14 14 0 11111111111111000000000000000000 15 15 0 11111111111111100000000000000000 16 16 0 11111111111111110000000000000000 17 17 0 11111111111111111000000000000000 18 18 0 11111111111111111100000000000000 19 19 0 11111111111111111110000000000000 20 20 0 11111111111111111111000000000000 21 21 0 11111111111111111111100000000000 22 22 0 11111111111111111111110000000000 23 23 0 11111111111111111111111000000000 24 24 0 11111111111111111111111100000000 25 25 0 11111111111111111111111110000000 26 26 0 11111111111111111111111111000000 27 27 0 11111111111111111111111111100000 28 28 0 11111111111111111111111111110000 29 29 0 11111111111111111111111111111000 30 30 0 11111111111111111111111111111100 31 31 0 11111111111111111111111111111110 first 0 bit should move left 1 position each line 0 -1 0 11111111111111111111111111111111 1 31 0 11111111111111111111111111111110 2 30 0 11111111111111111111111111111100 3 29 0 11111111111111111111111111111000 4 28 0 11111111111111111111111111110000 5 27 0 11111111111111111111111111100000 6 26 0 11111111111111111111111111000000 7 25 0 11111111111111111111111110000000 8 24 0 11111111111111111111111100000000 9 23 0 11111111111111111111111000000000 10 22 0 11111111111111111111110000000000 11 21 0 11111111111111111111100000000000 12 20 0 11111111111111111111000000000000 13 19 0 11111111111111111110000000000000 14 18 0 11111111111111111100000000000000 15 17 0 11111111111111111000000000000000 16 16 0 11111111111111110000000000000000 17 15 0 11111111111111100000000000000000 18 14 0 11111111111111000000000000000000 19 13 0 11111111111110000000000000000000 20 12 0 11111111111100000000000000000000 21 11 0 11111111111000000000000000000000 22 10 0 11111111110000000000000000000000 23 9 0 11111111100000000000000000000000 24 8 0 11111111000000000000000000000000 25 7 0 11111110000000000000000000000000 26 6 0 11111100000000000000000000000000 27 5 0 11111000000000000000000000000000 28 4 0 11110000000000000000000000000000 29 3 0 11100000000000000000000000000000 30 2 0 11000000000000000000000000000000 31 1 0 10000000000000000000000000000000 first 1 bit should move left 1 position each line 0 0 -1 00000000000000000000000000000000 1 0 31 00000000000000000000000000000001 2 0 30 00000000000000000000000000000011 3 0 29 00000000000000000000000000000111 4 0 28 00000000000000000000000000001111 5 0 27 00000000000000000000000000011111 6 0 26 00000000000000000000000000111111 7 0 25 00000000000000000000000001111111 8 0 24 00000000000000000000000011111111 9 0 23 00000000000000000000000111111111 10 0 22 00000000000000000000001111111111 11 0 21 00000000000000000000011111111111 12 0 20 00000000000000000000111111111111 13 0 19 00000000000000000001111111111111 14 0 18 00000000000000000011111111111111 15 0 17 00000000000000000111111111111111 16 0 16 00000000000000001111111111111111 17 0 15 00000000000000011111111111111111 18 0 14 00000000000000111111111111111111 19 0 13 00000000000001111111111111111111 20 0 12 00000000000011111111111111111111 21 0 11 00000000000111111111111111111111 22 0 10 00000000001111111111111111111111 23 0 9 00000000011111111111111111111111 24 0 8 00000000111111111111111111111111 25 0 7 00000001111111111111111111111111 26 0 6 00000011111111111111111111111111 27 0 5 00000111111111111111111111111111 28 0 4 00001111111111111111111111111111 29 0 3 00011111111111111111111111111111 30 0 2 00111111111111111111111111111111 31 0 1 01111111111111111111111111111111 0 bit should move right 1 position each line 0 0 1 01111111111111111111111111111111 1 1 0 10111111111111111111111111111111 2 2 0 11011111111111111111111111111111 3 3 0 11101111111111111111111111111111 4 4 0 11110111111111111111111111111111 5 5 0 11111011111111111111111111111111 6 6 0 11111101111111111111111111111111 7 7 0 11111110111111111111111111111111 8 8 0 11111111011111111111111111111111 9 9 0 11111111101111111111111111111111 10 10 0 11111111110111111111111111111111 11 11 0 11111111111011111111111111111111 12 12 0 11111111111101111111111111111111 13 13 0 11111111111110111111111111111111 14 14 0 11111111111111011111111111111111 15 15 0 11111111111111101111111111111111 16 16 0 11111111111111110111111111111111 17 17 0 11111111111111111011111111111111 18 18 0 11111111111111111101111111111111 19 19 0 11111111111111111110111111111111 20 20 0 11111111111111111111011111111111 21 21 0 11111111111111111111101111111111 22 22 0 11111111111111111111110111111111 23 23 0 11111111111111111111111011111111 24 24 0 11111111111111111111111101111111 25 25 0 11111111111111111111111110111111 26 26 0 11111111111111111111111111011111 27 27 0 11111111111111111111111111101111 28 28 0 11111111111111111111111111110111 29 29 0 11111111111111111111111111111011 30 30 0 11111111111111111111111111111101 31 31 0 11111111111111111111111111111110 1 bit should move right 1 position each line 0 1 0 10000000000000000000000000000000 1 0 1 01000000000000000000000000000000 2 0 2 00100000000000000000000000000000 3 0 3 00010000000000000000000000000000 4 0 4 00001000000000000000000000000000 5 0 5 00000100000000000000000000000000 6 0 6 00000010000000000000000000000000 7 0 7 00000001000000000000000000000000 8 0 8 00000000100000000000000000000000 9 0 9 00000000010000000000000000000000 10 0 10 00000000001000000000000000000000 11 0 11 00000000000100000000000000000000 12 0 12 00000000000010000000000000000000 13 0 13 00000000000001000000000000000000 14 0 14 00000000000000100000000000000000 15 0 15 00000000000000010000000000000000 16 0 16 00000000000000001000000000000000 17 0 17 00000000000000000100000000000000 18 0 18 00000000000000000010000000000000 19 0 19 00000000000000000001000000000000 20 0 20 00000000000000000000100000000000 21 0 21 00000000000000000000010000000000 22 0 22 00000000000000000000001000000000 23 0 23 00000000000000000000000100000000 24 0 24 00000000000000000000000010000000 25 0 25 00000000000000000000000001000000 26 0 26 00000000000000000000000000100000 27 0 27 00000000000000000000000000010000 28 0 28 00000000000000000000000000001000 29 0 29 00000000000000000000000000000100 30 0 30 00000000000000000000000000000010 31 0 31 00000000000000000000000000000001