[英]Using bitwise & operator and + in Java giving inconsistent results
有人可以解释为什么这两个Java代码的行为有所不同吗? 第一个正确计算位数,但第二个只显示1或0表示非零数字。 我不明白发生了什么。
public static void printNumUnitBits(int n){
int num=0;
for(int i=0;i<32;i++){
int x=n&1;
num=num+x;
n=n>>>1;
}
System.out.println("Number of one bits:"+num);
}
public static void printNumUnitBits(int n){
int num=0;
for(int i=0;i<32;i++){
num=num+n&1;
n=n>>>1;
}
System.out.println("Number of one bits:"+num);
}
在Java中, +
优先级高于&
。 您的表达式num+n&1
将添加num
和n
,然后取最低位。
要解决此问题,请尝试在第二个示例中使用num=num+(n&1);
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.