剑指offer 第82页
把一个整数减去1之后再和原来的整数做位与运算,得到的结果相当于是把整数的二进制表示中的最右边一个1变成0。
很多二进制的问题都可以用这个思路解决。
例题代码如下:
//求一个数的二进制表示中1的个数
int NumberOf1(int n)
{
int count=0;
while(n)
{
++count;
n=(n-1)&n;
}
return count;
}
剑指offer 第82页
把一个整数减去1之后再和原来的整数做位与运算,得到的结果相当于是把整数的二进制表示中的最右边一个1变成0。
很多二进制的问题都可以用这个思路解决。
例题代码如下:
//求一个数的二进制表示中1的个数
int NumberOf1(int n)
{
int count=0;
while(n)
{
++count;
n=(n-1)&n;
}
return count;
}