自己先写了一个,有点复杂。
这是最简单的方法:
int NumberOf1(int n) {
int result=0;while(n!=0)
{
n=n&(n-1);
result++;
}
return result;
}
利用n-1把n从右到左第一个1变为0,后面的所有0变为1。
n&(n-1)就把n的最后一位1去掉。
用位运算可以解决一些特殊的问题或许会简化很多。
自己先写了一个,有点复杂。
这是最简单的方法:
int NumberOf1(int n) {
int result=0;}
利用n-1把n从右到左第一个1变为0,后面的所有0变为1。
n&(n-1)就把n的最后一位1去掉。
用位运算可以解决一些特殊的问题或许会简化很多。