//怎样快速算出一个二进制32位整数中比特位为1的个数?
size_t bit_cnt(unsigned long value)
{
value = (value & 0x55555555) + ( (value >> 1) & 0x55555555);
value = (value & 0x33333333) + ( (value >> 2) & 0x33333333);
value = (value & 0x0f0f0f0f) + ( (value >> 4) & 0x0f0f0f0f);
value = (value & 0x00ff00ff) + ( (value >> 8) & 0x00ff00ff);
value = (value & 0x0000ffff) + ( (value >> 16) & 0x0000ffff);
return (size_t)value;
}