一.二进制中x&(x-1)的含义
把x的二进制最后一个1变为0
找一下规律:
二.应用
我们可以利用这个特性,来数这个数字中有多少数字1
算法分析:放入一个计数器,每循环一次,就把这个数字的最后一个1变为0,计数器++,当最后一个1也变为0时,循环结束。比如数字13->1101,第一次循环1101->1100->1000->0000
//统计二进制中一的个数
int Func(int x)
{
int count = 0;
while (x)
{
count++;
x = x & (x - 1);
}
return count;
}
int main()
{
int n;
cout << "请你输入一个数字 :" << endl;
cin >> n;
cout <<"这个数二进制中1的个数字是"<< Func(n) << endl;
return 0;
}