摘要:
求整数的二进制表示中1的个数,最直接的方式是求出其二进制表示,再计算出二进制表示中1的个数。但是这种方法的效率较低。因为我们只需要统计二进制表示中1的个数,所以没有必要将整数先转化为二进制,可以在对整数处理的过程中计数。整数转化为二进制,除了直接除以2以外,位操作的右移一位可以实现同样的功能。右移过程中会将最后一们直接丢弃,因此在右移操作之前需要先判断最后一们是否为1,使用“与”操作可以实现。例如如果n的最后一样是1,那么a & 0x01 = 1,否则a & 0x01 = 0。由此可以写出实现代码: 1 #include <stdio.h> 2 3 int main 阅读全文