二进制中有多少个1?
计算在一个 32 位的整数的二进制表示中有多少个 1?
思路:
1、首先判断整数正负;
2、循环31次,每次循环对整数进行无符号右移(>>>),然后判断整数的二进制表示的最后一位是否为1?
public class Solution {
public int countOnes(int num) {
int result = 0;
if(num < 0){
result = 1;
}
int i = 31;
while (i > 0){
if((num & 1) == 1){
result ++;
}
num = num >>> 1;
i --;
}
return result;
}
};