自己先写了一个,有点复杂。
这是最简单的方法:
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去掉。
用位运算可以解决一些特殊的问题或许会简化很多。
本文介绍了一种使用位运算技巧高效计算整数二进制表示中1的数量的方法。通过不断将数字与其减一后的结果进行按位与操作,逐步去除最低位的1,直至数字变为0。此过程中的迭代次数即为所求1的总数。
自己先写了一个,有点复杂。
这是最简单的方法:
int NumberOf1(int n) {
int result=0;}
利用n-1把n从右到左第一个1变为0,后面的所有0变为1。
n&(n-1)就把n的最后一位1去掉。
用位运算可以解决一些特殊的问题或许会简化很多。
334

被折叠的 条评论
为什么被折叠?