题目描述:
输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。
解题思路:
计算一个整数的二进制表示中1的个数,我们很自然就会想到让他自己去与1进行按位与操作,然后再进行移位。 本题较简单的一个点是,对于负数,已经用补码表示出来了,如果负数不是补码表示的话,恐怕还比较费劲
代码实现:
public static int NumberOf1(int n ){
int ans = 0 ;
for(int i =0;i<32;i++){
ans+=(n>>i)&1;
}
return ans;
}