题目的链接在这里:https://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8
题目大意
输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。数据范围:- 2^{31} <= n <= 2^{31}-1−2
31
<=n<=2
31
−1
即范围为:-2147483648<= n <= 2147483647−2147483648<=n<=2147483647
一、示意图
二、解题思路
位运算
位运算
代码如下:
public class Solution {
public int NumberOf1(int n) {
//这里直接使用按位 与运算
int temp=32;
int reslut=0;
while (temp>0){
//先进行判断 所以这里问题是 -5在Java中就是补码形式吗 好吧 就是这样的
if((n&1)==1){
reslut++;
}
//然后n右移
n= n>>1;
temp--;
}
return reslut;
}
}