本文共 496 字,大约阅读时间需要 1 分钟。
整数n的二进制数中1的个数
编写一个函数,输入是一个整数,返回其二进制表达式中数字位数为 '1' 的个数。
代码如下:
int func(int n) { int count = 0; while(n > 0) { count++; n &= (n - 1); } return count;} 原理:n & (n - 1) 按位与每计算一次,低位减一
当我们用n & (n - 1)进行按位与运算时,每次操作都会将n的最低位1转为0。这个过程不断重复直到n变为0。具体来说,每次循环n都会减少一个二进制位的重量。例如:
由此可见,n & (n - 1)运算的次数可以用来表示n的二进制中1的位数。
通过上述方法,我们可以快速计算出一个整数的二进制表示中1的个数。这一方法不仅简单高效,而且在时间复杂度上是O(log n),因此非常适用于大范围的整数。
转载地址:http://jwso.baihongyu.com/