BIT_COUNT(N)
Returns the number of bits that are set in the argument N.
-------
I thought that meant that it returned the number of bits which needed to be set in order to store the value. To store 2^32 you need 33 bits of storage, with only one bit /set/. I expected 33 instead of 1.
#tested on 5.0.45 and 5.1.32-community mysql> select i, pow(2,i), bit_count(pow(2,i)) from pow2; +----+------------+---------------------+ | i | pow(2,i) | bit_count(pow(2,i)) | +----+------------+---------------------+ | 1 | 2 | 1 | | 2 | 4 | 1 | | 3 | 8 | 1 | | 4 | 16 | 1 | | 5 | 32 | 1 | | 6 | 64 | 1 | | 7 | 128 | 1 | | 8 | 256 | 1 | | 9 | 512 | 1 | | 10 | 1024 | 1 | | 11 | 2048 | 1 | | 12 | 4096 | 1 | | 13 | 8192 | 1 | | 14 | 16384 | 1 | | 15 | 32768 | 1 | | 16 | 65536 | 1 | | 17 | 131072 | 1 | | 18 | 262144 | 1 | | 19 | 524288 | 1 | | 20 | 1048576 | 1 | | 21 | 2097152 | 1 | | 22 | 4194304 | 1 | | 23 | 8388608 | 1 | | 24 | 16777216 | 1 | | 25 | 33554432 | 1 | | 26 | 67108864 | 1 | | 27 | 134217728 | 1 | | 28 | 268435456 | 1 | | 29 | 536870912 | 1 | | 30 | 1073741824 | 1 | | 31 | 2147483648 | 1 | | 32 | 4294967296 | 1 | +----+------------+---------------------+ 32 rows in set (0.00 sec) [edit] I'm a boob. I forgot to subtract one. all powers of two do only have one bit set. I'm still not feeling well and taking cold medication.