| |
如何求一个数二进制表示中1的个数?
代码如下:
x = (x & 0x55555555) + ((x>>1) & 0x55555555);
x = (x & 0x33333333) + ((x>>2) & 0x33333333);
x = (x & 0x0f0f0f0f) + ((x>>4) & 0x0f0f0f0f);
x += (x>>8);
x += (x>>16);
return (x & 0x00ff);
太绝了,万恶的csdn那哥们居然光给代码不给说明,害我草稿纸上演算半天才明白杂回事,在拍案叫绝的同时,不禁可惜自己脑细胞又死了一堆。临了再说一句,这方法太tmd绝了。