gpt4 book ai didi

Java 按位非

转载 作者:行者123 更新时间:2023-11-29 10:05:25 25 4
gpt4 key购买 nike

我必须执行 Boolean 操作,例如,

 B1=00 10 11 01 00 
B2=00 10 11 01
B1 NOR B2 =11 11 11 11

在 Java 中怎么可能?有人可以帮忙吗?

抱歉,我忘了说,在 Java 中是否可以始终从左侧执行这种按位或非运算而不进行移位(B2 的位数较少)?

最佳答案

如果 b1b2 是您的 (int) 变量,则表达式为:

~(b1 | b2)

有关详细信息,请参阅 Bitwise and Bit Shift Operators .

但是,在您的示例中,变量的长度不同。结果也不对应于 NOR。

更新:如果您有两个 boolean 值序列,大小不相等,并且只需要其中的一部分(从左到右),我建议使用 BitSet :

BitSet b1 = new BitSet();
// Fill it with booleans:
for ( int i = 0 ; i < myBooleans.length ; i++ )
b1.set(i, myBooleans[i]);
// Or fill it with bytes:
BitSet b1 = BitSet.valueOf(myBytes);
// Or fill it with 0/1 from a string:
for ( int i = 0 ; i < myString.length() ; i++ )
b1.set(i, myString.charAt(i) == "1");

BitSet b2 = new BitSet();
// Same as above

BitSet result = new BitSet();
result.or(b1); // Copies b1
result.or(b2); // Makes the OR
result.flip(0,result.size()); // Negates - the result is a NOR
result.clear(Math.min(b1.size(), b2.size()), result.size()); // Only retain the common size

如果你真的想使用int,那么最好从右到左表示它(即第一位是b % 2,第二位是 b/2 % 2 等。然后您只需按照开头所述执行 NOR,并在必要时截断结果。

如果它们从左到右表示,我相信有必要进行一次移位(或乘法/除法,这本质上是同一件事,但更昂贵......),除非它们用 0 填充(例如: B1=0010 1101 0000 0000 0000 0000 0000 0000B2=0010 1101 0000 0000 0000 0000 0000 0000)。这种情况下可以正常操作。

关于Java 按位非,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9659622/

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