二进制中1的个数

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

分析

  • 原码:将一个整数,转换成二进制,这个二进制就是其原码
  • 反码:正数的反码就是其原码;负数的反码是其原码除符号位外,每位取反
  • 补码:正数的补码就是其原码;负数的的补码是其反码加1

二进制中1的个数-讨论

主要方法为与运算,将n看作二进制数,那么其中的1个数就是与1,10,100,1000…相与后的结果。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Solution {
public int NumberOf1(int n) {
int test = 1;
int c = 0;

while( test != 0 ){
if( ( n & test ) != 0 ){
c++;
}
test = test<<1;
}
return c;
}
}