算法:二进制中1的个数
Posted 爱吃土豆的男孩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法:二进制中1的个数相关的知识,希望对你有一定的参考价值。
1 int NumberOf1(int n) { 2 int count = 0; 3 while(n!= 0){ 4 count++; 5 n = n & (n - 1); 6 } 7 return count; 8 }
算法核心部分就是
n = n & (n - 1);
着行代码可以吧n的最后一位1变成0,负数用补码表示同样可以。
举个例子:二进制数n 为 1100,n-1 = 1011
n&n-1 = 1000 n的第三位是1,运算后变成了0;
如果n为负数同样,第一位为符号位,设n = 11000
n = n&(n-1)运算一次,n = 10000;
运算两次 n = 00000;
以上是关于算法:二进制中1的个数的主要内容,如果未能解决你的问题,请参考以下文章