看到別人的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;
看到別人的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;