gpt4 book ai didi

java - 在 Java 中使用按位 & 运算符和 + 给出不一致的结果

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:10:25 25 4
gpt4 key购买 nike

有人可以解释为什么这两段 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 中,+higher precedence&。您的表达式 num+n&1 将添加 numn,然后取最低位。

要解决此问题,请尝试使用第二个示例中的语句 num=num+(n&1);

关于java - 在 Java 中使用按位 & 运算符和 + 给出不一致的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13026029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com