0 题目
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
1 分析
一个数除2,余数为1,那么表示二进制中含有一个1。
因此可以使用循环,依次判断。
但是除法效率底,这里又是除2,因此可以使用位运算实现除2
2实现
int NumberOf1(int n) { unsigned int flag = 1; int counts = 0; while (flag) { if (flag & n)//替换判断最后一位是否为1 { ++counts; } flag = flag << 1; } return counts; }