算一個字(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;

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