首页 > 代码库 > n的二进制中有几个1
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。