n&(n-1)的妙用(强大的位运算)

《编程之美》中n&(n-1)还有很多妙用,这里来总结一下。


基本原理:

       n&(n-1)作用:将n的二进制表示中的最低位为1的改为0,先看一个简单的例子:

      n = 10100(二进制),则(n-1) = 10011 ==》n&(n-1) = 10000

     可以看到原本最低位为1的那位变为0。


如下应用:

    1. 求某一个数的二进制表示中1的个数

 代码块:

	while(n > 0)
	{
		count++;
		n&=(n-1);
	}


完整代码:

#include 
#include 
using namespace std;
int main()
{
	int n, count = 0;
	cin>>n

你可能感兴趣的:(C,&&,C++,算法)