n的二进制中有几个1
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了n的二进制中有几个1相关的知识,希望对你有一定的参考价值。
实例十七:n的二进制中有几个1
方法:result=n & (n-1)
n&(n-1)的目的使最低位的1不断翻转。
比如:n=108,其二进制表示为0110 1100,则n&(n-1)的结果为0110 1000.
因此只要不停地翻转n的二进制的最低位的1,每一次翻转让计数器+1,直到n等于0时,
计数器中记录了n的二进制中的1的个数。
解释:
n 0000 1101
n-1 0000 1100
n&(n-1) 0000 1100 ----记录一次
n-1 0000 1011
与上次进行& 0000 1000 ---记录一次
与此类推。。。。
当然,也可以利用实例十五的方法,对数值进行按位读取,若为1,就计数。在此不加以解释。
代码:
int _tmain(int argc, _TCHAR* argv[])
{
int n, nCount=0;
cout<<"请输入数值:";
cin >> n;
while (n)
{
n = n&(n - 1);
nCount++;
}
cout << "1的个数:"<<nCount;
system("pause");
return 0;
};
以上是关于n的二进制中有几个1的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode-191. Number of 1 Bits