题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
结题思路:由于是一个int型的整数,所以一共只有32位,我们只需要对它的每一位和1进行&操作得到结果,然后将所有的结果相加就可以得到最后的答案了;AC代码如下:
public class Solution { public int NumberOf1(int n) { int k = 1; int sum = 0; for (int i = 1; i <= 32; i++) { int temp = k & n; if (temp != 0) sum++; k <<= 1; } return sum; } }