Testing with TEST_LENGTH = 49 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 32 4 1 4 33 4 2 5 34 4 4 5 35 4 8 5 36 4 16 5 37 4 32 5 38 4 64 5 39 4 128 5 40 5 1 5 41 5 2 6 42 5 4 6 43 5 8 6 44 5 16 6 45 5 32 6 46 5 64 6 47 5 128 6 48 6 1 6 test bit_alloc, clearbits, bit_ffc, bit_ffs be: 0 -1 0000000000000000000000000000000000000000000000000 is: 0 -1 0000000000000000000000000000000000000000000000000 test bit_set be: 1 0 1001001001001001001001001001001001001001001001001 is: 1 0 1001001001001001001001001001001001001001001001001 test bit_clear be: 0 3 0001000001000001000001000001000001000001000001000 is: 0 3 0001000001000001000001000001000001000001000001000 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 32 0 33 2 34 0 35 0 36 0 37 0 38 0 39 128 40 0 41 0 42 0 43 0 44 0 45 32 46 0 47 0 48 0 test clearbits be: 0 -1 0000000000000000000000000000000000000000000000000 is: 0 -1 0000000000000000000000000000000000000000000000000 test bit_nset and bit_nclear be: 0 1 0111111111111111111111111111111111111111111111110 is: 0 1 0111111111111111111111111111111111111111111111110 be: 0 1 0100000000000000000000000000000000000000000000010 is: 0 1 0100000000000000000000000000000000000000000000010 be: 0 -1 0000000000000000000000000000000000000000000000000 is: 0 -1 0000000000000000000000000000000000000000000000000 be: 48 0 1111111111111111111111111111111111111111111111110 is: 48 0 1111111111111111111111111111111111111111111111110 be: 0 -1 0000000000000000000000000000000000000000000000000 is: 0 -1 0000000000000000000000000000000000000000000000000 first 1 bit should move right 1 position each line 0 -1 0 1111111111111111111111111111111111111111111111111 1 0 1 0111111111111111111111111111111111111111111111111 2 0 2 0011111111111111111111111111111111111111111111111 3 0 3 0001111111111111111111111111111111111111111111111 4 0 4 0000111111111111111111111111111111111111111111111 5 0 5 0000011111111111111111111111111111111111111111111 6 0 6 0000001111111111111111111111111111111111111111111 7 0 7 0000000111111111111111111111111111111111111111111 8 0 8 0000000011111111111111111111111111111111111111111 9 0 9 0000000001111111111111111111111111111111111111111 10 0 10 0000000000111111111111111111111111111111111111111 11 0 11 0000000000011111111111111111111111111111111111111 12 0 12 0000000000001111111111111111111111111111111111111 13 0 13 0000000000000111111111111111111111111111111111111 14 0 14 0000000000000011111111111111111111111111111111111 15 0 15 0000000000000001111111111111111111111111111111111 16 0 16 0000000000000000111111111111111111111111111111111 17 0 17 0000000000000000011111111111111111111111111111111 18 0 18 0000000000000000001111111111111111111111111111111 19 0 19 0000000000000000000111111111111111111111111111111 20 0 20 0000000000000000000011111111111111111111111111111 21 0 21 0000000000000000000001111111111111111111111111111 22 0 22 0000000000000000000000111111111111111111111111111 23 0 23 0000000000000000000000011111111111111111111111111 24 0 24 0000000000000000000000001111111111111111111111111 25 0 25 0000000000000000000000000111111111111111111111111 26 0 26 0000000000000000000000000011111111111111111111111 27 0 27 0000000000000000000000000001111111111111111111111 28 0 28 0000000000000000000000000000111111111111111111111 29 0 29 0000000000000000000000000000011111111111111111111 30 0 30 0000000000000000000000000000001111111111111111111 31 0 31 0000000000000000000000000000000111111111111111111 32 0 32 0000000000000000000000000000000011111111111111111 33 0 33 0000000000000000000000000000000001111111111111111 34 0 34 0000000000000000000000000000000000111111111111111 35 0 35 0000000000000000000000000000000000011111111111111 36 0 36 0000000000000000000000000000000000001111111111111 37 0 37 0000000000000000000000000000000000000111111111111 38 0 38 0000000000000000000000000000000000000011111111111 39 0 39 0000000000000000000000000000000000000001111111111 40 0 40 0000000000000000000000000000000000000000111111111 41 0 41 0000000000000000000000000000000000000000011111111 42 0 42 0000000000000000000000000000000000000000001111111 43 0 43 0000000000000000000000000000000000000000000111111 44 0 44 0000000000000000000000000000000000000000000011111 45 0 45 0000000000000000000000000000000000000000000001111 46 0 46 0000000000000000000000000000000000000000000000111 47 0 47 0000000000000000000000000000000000000000000000011 48 0 48 0000000000000000000000000000000000000000000000001 first 0 bit should move right 1 position each line 0 0 -1 0000000000000000000000000000000000000000000000000 1 1 0 1000000000000000000000000000000000000000000000000 2 2 0 1100000000000000000000000000000000000000000000000 3 3 0 1110000000000000000000000000000000000000000000000 4 4 0 1111000000000000000000000000000000000000000000000 5 5 0 1111100000000000000000000000000000000000000000000 6 6 0 1111110000000000000000000000000000000000000000000 7 7 0 1111111000000000000000000000000000000000000000000 8 8 0 1111111100000000000000000000000000000000000000000 9 9 0 1111111110000000000000000000000000000000000000000 10 10 0 1111111111000000000000000000000000000000000000000 11 11 0 1111111111100000000000000000000000000000000000000 12 12 0 1111111111110000000000000000000000000000000000000 13 13 0 1111111111111000000000000000000000000000000000000 14 14 0 1111111111111100000000000000000000000000000000000 15 15 0 1111111111111110000000000000000000000000000000000 16 16 0 1111111111111111000000000000000000000000000000000 17 17 0 1111111111111111100000000000000000000000000000000 18 18 0 1111111111111111110000000000000000000000000000000 19 19 0 1111111111111111111000000000000000000000000000000 20 20 0 1111111111111111111100000000000000000000000000000 21 21 0 1111111111111111111110000000000000000000000000000 22 22 0 1111111111111111111111000000000000000000000000000 23 23 0 1111111111111111111111100000000000000000000000000 24 24 0 1111111111111111111111110000000000000000000000000 25 25 0 1111111111111111111111111000000000000000000000000 26 26 0 1111111111111111111111111100000000000000000000000 27 27 0 1111111111111111111111111110000000000000000000000 28 28 0 1111111111111111111111111111000000000000000000000 29 29 0 1111111111111111111111111111100000000000000000000 30 30 0 1111111111111111111111111111110000000000000000000 31 31 0 1111111111111111111111111111111000000000000000000 32 32 0 1111111111111111111111111111111100000000000000000 33 33 0 1111111111111111111111111111111110000000000000000 34 34 0 1111111111111111111111111111111111000000000000000 35 35 0 1111111111111111111111111111111111100000000000000 36 36 0 1111111111111111111111111111111111110000000000000 37 37 0 1111111111111111111111111111111111111000000000000 38 38 0 1111111111111111111111111111111111111100000000000 39 39 0 1111111111111111111111111111111111111110000000000 40 40 0 1111111111111111111111111111111111111111000000000 41 41 0 1111111111111111111111111111111111111111100000000 42 42 0 1111111111111111111111111111111111111111110000000 43 43 0 1111111111111111111111111111111111111111111000000 44 44 0 1111111111111111111111111111111111111111111100000 45 45 0 1111111111111111111111111111111111111111111110000 46 46 0 1111111111111111111111111111111111111111111111000 47 47 0 1111111111111111111111111111111111111111111111100 48 48 0 1111111111111111111111111111111111111111111111110 first 0 bit should move left 1 position each line 0 -1 0 1111111111111111111111111111111111111111111111111 1 48 0 1111111111111111111111111111111111111111111111110 2 47 0 1111111111111111111111111111111111111111111111100 3 46 0 1111111111111111111111111111111111111111111111000 4 45 0 1111111111111111111111111111111111111111111110000 5 44 0 1111111111111111111111111111111111111111111100000 6 43 0 1111111111111111111111111111111111111111111000000 7 42 0 1111111111111111111111111111111111111111110000000 8 41 0 1111111111111111111111111111111111111111100000000 9 40 0 1111111111111111111111111111111111111111000000000 10 39 0 1111111111111111111111111111111111111110000000000 11 38 0 1111111111111111111111111111111111111100000000000 12 37 0 1111111111111111111111111111111111111000000000000 13 36 0 1111111111111111111111111111111111110000000000000 14 35 0 1111111111111111111111111111111111100000000000000 15 34 0 1111111111111111111111111111111111000000000000000 16 33 0 1111111111111111111111111111111110000000000000000 17 32 0 1111111111111111111111111111111100000000000000000 18 31 0 1111111111111111111111111111111000000000000000000 19 30 0 1111111111111111111111111111110000000000000000000 20 29 0 1111111111111111111111111111100000000000000000000 21 28 0 1111111111111111111111111111000000000000000000000 22 27 0 1111111111111111111111111110000000000000000000000 23 26 0 1111111111111111111111111100000000000000000000000 24 25 0 1111111111111111111111111000000000000000000000000 25 24 0 1111111111111111111111110000000000000000000000000 26 23 0 1111111111111111111111100000000000000000000000000 27 22 0 1111111111111111111111000000000000000000000000000 28 21 0 1111111111111111111110000000000000000000000000000 29 20 0 1111111111111111111100000000000000000000000000000 30 19 0 1111111111111111111000000000000000000000000000000 31 18 0 1111111111111111110000000000000000000000000000000 32 17 0 1111111111111111100000000000000000000000000000000 33 16 0 1111111111111111000000000000000000000000000000000 34 15 0 1111111111111110000000000000000000000000000000000 35 14 0 1111111111111100000000000000000000000000000000000 36 13 0 1111111111111000000000000000000000000000000000000 37 12 0 1111111111110000000000000000000000000000000000000 38 11 0 1111111111100000000000000000000000000000000000000 39 10 0 1111111111000000000000000000000000000000000000000 40 9 0 1111111110000000000000000000000000000000000000000 41 8 0 1111111100000000000000000000000000000000000000000 42 7 0 1111111000000000000000000000000000000000000000000 43 6 0 1111110000000000000000000000000000000000000000000 44 5 0 1111100000000000000000000000000000000000000000000 45 4 0 1111000000000000000000000000000000000000000000000 46 3 0 1110000000000000000000000000000000000000000000000 47 2 0 1100000000000000000000000000000000000000000000000 48 1 0 1000000000000000000000000000000000000000000000000 first 1 bit should move left 1 position each line 0 0 -1 0000000000000000000000000000000000000000000000000 1 0 48 0000000000000000000000000000000000000000000000001 2 0 47 0000000000000000000000000000000000000000000000011 3 0 46 0000000000000000000000000000000000000000000000111 4 0 45 0000000000000000000000000000000000000000000001111 5 0 44 0000000000000000000000000000000000000000000011111 6 0 43 0000000000000000000000000000000000000000000111111 7 0 42 0000000000000000000000000000000000000000001111111 8 0 41 0000000000000000000000000000000000000000011111111 9 0 40 0000000000000000000000000000000000000000111111111 10 0 39 0000000000000000000000000000000000000001111111111 11 0 38 0000000000000000000000000000000000000011111111111 12 0 37 0000000000000000000000000000000000000111111111111 13 0 36 0000000000000000000000000000000000001111111111111 14 0 35 0000000000000000000000000000000000011111111111111 15 0 34 0000000000000000000000000000000000111111111111111 16 0 33 0000000000000000000000000000000001111111111111111 17 0 32 0000000000000000000000000000000011111111111111111 18 0 31 0000000000000000000000000000000111111111111111111 19 0 30 0000000000000000000000000000001111111111111111111 20 0 29 0000000000000000000000000000011111111111111111111 21 0 28 0000000000000000000000000000111111111111111111111 22 0 27 0000000000000000000000000001111111111111111111111 23 0 26 0000000000000000000000000011111111111111111111111 24 0 25 0000000000000000000000000111111111111111111111111 25 0 24 0000000000000000000000001111111111111111111111111 26 0 23 0000000000000000000000011111111111111111111111111 27 0 22 0000000000000000000000111111111111111111111111111 28 0 21 0000000000000000000001111111111111111111111111111 29 0 20 0000000000000000000011111111111111111111111111111 30 0 19 0000000000000000000111111111111111111111111111111 31 0 18 0000000000000000001111111111111111111111111111111 32 0 17 0000000000000000011111111111111111111111111111111 33 0 16 0000000000000000111111111111111111111111111111111 34 0 15 0000000000000001111111111111111111111111111111111 35 0 14 0000000000000011111111111111111111111111111111111 36 0 13 0000000000000111111111111111111111111111111111111 37 0 12 0000000000001111111111111111111111111111111111111 38 0 11 0000000000011111111111111111111111111111111111111 39 0 10 0000000000111111111111111111111111111111111111111 40 0 9 0000000001111111111111111111111111111111111111111 41 0 8 0000000011111111111111111111111111111111111111111 42 0 7 0000000111111111111111111111111111111111111111111 43 0 6 0000001111111111111111111111111111111111111111111 44 0 5 0000011111111111111111111111111111111111111111111 45 0 4 0000111111111111111111111111111111111111111111111 46 0 3 0001111111111111111111111111111111111111111111111 47 0 2 0011111111111111111111111111111111111111111111111 48 0 1 0111111111111111111111111111111111111111111111111 0 bit should move right 1 position each line 0 0 1 0111111111111111111111111111111111111111111111111 1 1 0 1011111111111111111111111111111111111111111111111 2 2 0 1101111111111111111111111111111111111111111111111 3 3 0 1110111111111111111111111111111111111111111111111 4 4 0 1111011111111111111111111111111111111111111111111 5 5 0 1111101111111111111111111111111111111111111111111 6 6 0 1111110111111111111111111111111111111111111111111 7 7 0 1111111011111111111111111111111111111111111111111 8 8 0 1111111101111111111111111111111111111111111111111 9 9 0 1111111110111111111111111111111111111111111111111 10 10 0 1111111111011111111111111111111111111111111111111 11 11 0 1111111111101111111111111111111111111111111111111 12 12 0 1111111111110111111111111111111111111111111111111 13 13 0 1111111111111011111111111111111111111111111111111 14 14 0 1111111111111101111111111111111111111111111111111 15 15 0 1111111111111110111111111111111111111111111111111 16 16 0 1111111111111111011111111111111111111111111111111 17 17 0 1111111111111111101111111111111111111111111111111 18 18 0 1111111111111111110111111111111111111111111111111 19 19 0 1111111111111111111011111111111111111111111111111 20 20 0 1111111111111111111101111111111111111111111111111 21 21 0 1111111111111111111110111111111111111111111111111 22 22 0 1111111111111111111111011111111111111111111111111 23 23 0 1111111111111111111111101111111111111111111111111 24 24 0 1111111111111111111111110111111111111111111111111 25 25 0 1111111111111111111111111011111111111111111111111 26 26 0 1111111111111111111111111101111111111111111111111 27 27 0 1111111111111111111111111110111111111111111111111 28 28 0 1111111111111111111111111111011111111111111111111 29 29 0 1111111111111111111111111111101111111111111111111 30 30 0 1111111111111111111111111111110111111111111111111 31 31 0 1111111111111111111111111111111011111111111111111 32 32 0 1111111111111111111111111111111101111111111111111 33 33 0 1111111111111111111111111111111110111111111111111 34 34 0 1111111111111111111111111111111111011111111111111 35 35 0 1111111111111111111111111111111111101111111111111 36 36 0 1111111111111111111111111111111111110111111111111 37 37 0 1111111111111111111111111111111111111011111111111 38 38 0 1111111111111111111111111111111111111101111111111 39 39 0 1111111111111111111111111111111111111110111111111 40 40 0 1111111111111111111111111111111111111111011111111 41 41 0 1111111111111111111111111111111111111111101111111 42 42 0 1111111111111111111111111111111111111111110111111 43 43 0 1111111111111111111111111111111111111111111011111 44 44 0 1111111111111111111111111111111111111111111101111 45 45 0 1111111111111111111111111111111111111111111110111 46 46 0 1111111111111111111111111111111111111111111111011 47 47 0 1111111111111111111111111111111111111111111111101 48 48 0 1111111111111111111111111111111111111111111111110 1 bit should move right 1 position each line 0 1 0 1000000000000000000000000000000000000000000000000 1 0 1 0100000000000000000000000000000000000000000000000 2 0 2 0010000000000000000000000000000000000000000000000 3 0 3 0001000000000000000000000000000000000000000000000 4 0 4 0000100000000000000000000000000000000000000000000 5 0 5 0000010000000000000000000000000000000000000000000 6 0 6 0000001000000000000000000000000000000000000000000 7 0 7 0000000100000000000000000000000000000000000000000 8 0 8 0000000010000000000000000000000000000000000000000 9 0 9 0000000001000000000000000000000000000000000000000 10 0 10 0000000000100000000000000000000000000000000000000 11 0 11 0000000000010000000000000000000000000000000000000 12 0 12 0000000000001000000000000000000000000000000000000 13 0 13 0000000000000100000000000000000000000000000000000 14 0 14 0000000000000010000000000000000000000000000000000 15 0 15 0000000000000001000000000000000000000000000000000 16 0 16 0000000000000000100000000000000000000000000000000 17 0 17 0000000000000000010000000000000000000000000000000 18 0 18 0000000000000000001000000000000000000000000000000 19 0 19 0000000000000000000100000000000000000000000000000 20 0 20 0000000000000000000010000000000000000000000000000 21 0 21 0000000000000000000001000000000000000000000000000 22 0 22 0000000000000000000000100000000000000000000000000 23 0 23 0000000000000000000000010000000000000000000000000 24 0 24 0000000000000000000000001000000000000000000000000 25 0 25 0000000000000000000000000100000000000000000000000 26 0 26 0000000000000000000000000010000000000000000000000 27 0 27 0000000000000000000000000001000000000000000000000 28 0 28 0000000000000000000000000000100000000000000000000 29 0 29 0000000000000000000000000000010000000000000000000 30 0 30 0000000000000000000000000000001000000000000000000 31 0 31 0000000000000000000000000000000100000000000000000 32 0 32 0000000000000000000000000000000010000000000000000 33 0 33 0000000000000000000000000000000001000000000000000 34 0 34 0000000000000000000000000000000000100000000000000 35 0 35 0000000000000000000000000000000000010000000000000 36 0 36 0000000000000000000000000000000000001000000000000 37 0 37 0000000000000000000000000000000000000100000000000 38 0 38 0000000000000000000000000000000000000010000000000 39 0 39 0000000000000000000000000000000000000001000000000 40 0 40 0000000000000000000000000000000000000000100000000 41 0 41 0000000000000000000000000000000000000000010000000 42 0 42 0000000000000000000000000000000000000000001000000 43 0 43 0000000000000000000000000000000000000000000100000 44 0 44 0000000000000000000000000000000000000000000010000 45 0 45 0000000000000000000000000000000000000000000001000 46 0 46 0000000000000000000000000000000000000000000000100 47 0 47 0000000000000000000000000000000000000000000000010 48 0 48 0000000000000000000000000000000000000000000000001