题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
解题思路
在计算机中存储的数为补码的形式,因此 只要比较即可
1.移位的方式
使用一个比较的对象 index = 1 每次左移1位 1-》2 -》4 ,与原数进行与运算,如果为1则为计数加1.
2.转化为二进制进行统计。 Integer.toBinaryString(n); string.toCharArray();
方法一:
public class Solution {
public int NumberOf1(int n) {
int index = 1;
int num = 0;
while(index != 0){
if((n & index) != 0)
num ++;
index = index << 1;
}
return num;
}
}
方法二:
public class Solution {
public int NumberOf1(int n) {
int number = 0;
String string = Integer.toBinaryString(n);//int -> 二进制String
char[] chars = string.toCharArray(); // string -> charArray
int i = 0;
for( ; i < string.length() ; i++){
if(chars[i]=='1')
number++;
}
return number++;
}
}