算一个字(DWORD)里有多少bit被置1

看到别人的blog里面有道这样的面试题,答案如下(求出n中1的个数):
int count=0;
 for (register u_long m = n;m != 0;m &= m - 1)    count++;

只用一行,而且循环次数(=m二进制中1的个数)很少.

同样一语句实现x是否为2的若干次幂的判断
int i = 512;
cout << boolalpha << ((i & (i - 1)) ? false : true) << endl;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章