public class NumbersOfOne {
public static void main(String[] args) {
System.out.println(NumberOf1(1024));
}
/**
* 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
* 我们可以直接利用移位操作对一个十进制数进行移位操作,
* 即:将最高位的数移至最低位(移31位),除过最低位其余位置清零,使用& 操作,
* 可以使用和1相与(&),由于1在内存中除过最低位是1,其余31位都是零,
* 然后把这个数按十进制输出;再移次高位,做相同的操作,直到最后一位
* 来源:https://www.cnblogs.com/vsign/p/7290594.html
*/
public static int NumberOf1(int n) {
int sum = 0;
for(int i = 31;i >= 0; i--){
if((n >>> i & 1)==1){
sum++;
}
}
return sum;
}
}
二进制中1的个数-----牛客笔记
最新推荐文章于 2024-09-03 20:45:39 发布