gpt4 book ai didi

java - 奇怪的位移行为

转载 作者:行者123 更新时间:2023-12-02 03:02:02 25 4
gpt4 key购买 nike

我正在尝试通过迭代和位移来解决幂集问题。
有一种我无法理解的特殊行为。
我希望下面的所有 3 条语句都表明测试 i 中的第 j 位是否已设置。
为什么结果会不同?

private static void printSubsetInBit(Integer[] arr) {
for(int i=0;i<(1<<arr.length);i++){
List<Integer> pack=new ArrayList<Integer>();
for(int j=0;j<arr.length;j++){
//if(((i>>j)&1)==1){ -->>>> WORKS
//if((i & ( 1<<j))>0){-->>>> WORKS
if((i & ( 1<<j))==1){ -->>>> DOES NOT WORK
pack.add(arr[j]);
}
}
System.out.println(pack.toString());
}
}

最佳答案

如果左移 1 j,然后用它来屏蔽 i,则必须将结果与左移 1 j 的结果进行比较,而不是与 1 进行比较。

换句话说,条件应该是

((i & (1 << j)) == (1 << j))

或者只是“!= 0”就可以了。

关于java - 奇怪的位移行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42318133/

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