Please implement a function to get the number of 1s in an integer. For example, the integer 9 is 1001 in binary, so it returns 2 since there are two bits of 1s.
A:
左移(数字1)或者右移(n),同时和1 比较 ---(下面代码是右移)
int NumberOf1(int n){ int count = 0; while(n) { if(n & 1) count ++; n = n >> 1; } return count; }
tricky点儿的是 y用 n&(n-1)消去最右边的一个1.
int NumberOf1(int n){ int count = 0; while (n){ ++ count; n = (n - 1) & n; } return count; }
No comments:
Post a Comment