Java位Nor
我必须做Java位Nor,java,Java,我必须做Boolean操作,比如 B1=00 10 11 01 00 B2=00 10 11 01 B1 NOR B2 =11 11 11 11 在Java中它是如何实现的?有人能帮忙吗 很抱歉,我忘了提到,在Java中,是否可以始终不移位地从左侧执行此按位NOR操作(B2具有较少的位)?NOR只是“not or”,所以只需执行按位or和反转 B1或B2=~(B1 | B2) 不过,你的例子对我来说毫无意义。为什么(2'b11或2'b11)=2'b11?也不只是“not or”,所
Boolean
操作,比如
B1=00 10 11 01 00
B2=00 10 11 01
B1 NOR B2 =11 11 11 11
在Java中它是如何实现的?有人能帮忙吗
很抱歉,我忘了提到,在Java中,是否可以始终不移位地从左侧执行此按位NOR操作(B2具有较少的位)?NOR只是“not or”,所以只需执行按位or和反转
B1或B2=~(B1 | B2)代码>
不过,你的例子对我来说毫无意义。为什么(2'b11或2'b11)=2'b11?
也不只是“not or”,所以只需按位或并反转即可
B1或B2=~(B1 | B2)代码>
不过,你的例子对我来说毫无意义。为什么(2'b11或2'b11)=2'b11?
如果b1
和b2
是您的(int)变量,则表达式为:
~(b1 | b2)
有关详细信息,请参阅
但是,在您的示例中,变量具有不同的长度。结果与a或B都不对应
更新:如果有两个布尔值序列,大小不相等,只需要一部分(从左到右),我建议使用:
位集b1=新位集();
//用布尔语填充它:
for(int i=0;i
如果您真的想使用int
,那么最好从右向左表示它(即第一位是b%2
,第二位是b/2%2
),等等。然后您只需按照开头解释的那样执行NOR,并在必要时截断结果
如果它们是从左到右表示的,我认为有必要进行移位(或者乘法/除法,本质上是一样的,但更昂贵……),除非它们用0填充(例如:B1=0010 1101 0000
,B2=0010 1101 0000
)。在这种情况下,您可以正常执行操作。如果b1
和b2
是您的(int)变量,则表达式为:
~(b1 | b2)
有关详细信息,请参阅
但是,在您的示例中,变量的长度不同。结果与a或a都不对应
更新:如果有两个布尔值序列,大小不相等,只需要一部分(从左到右),我建议使用:
位集b1=新位集();
//用布尔语填充它:
for(int i=0;i
如果您真的想使用int
,那么最好从右向左表示它(即第一位是b%2
,第二位是b/2%2
),等等。然后您只需按照开头解释的那样执行NOR,并在必要时截断结果
如果它们是从左到右表示的,我认为有必要进行移位(或者乘法/除法,本质上是一样的,但更昂贵……),除非它们用0填充(例如:B1=0010 1101 0000
,B2=0010 1101 0000
)。在这种情况下,您可以正常执行操作。xor b1与B2,然后“not”结果:
B1 xnor B2 = ~(B1^B2)
将b1与B2异或,则结果为“非”:
B1 xnor B2 = ~(B1^B2)
按位或
|
然后按位非~。如何获得B1和B2?字节
?位[]
?整数[]
?字符[]
?你确定你没有要求XNOR吗?b1 XNOR b2是11,基于你的例子…@Tung,对不起,我要求XNOR。但是,主要问题不是门,位长度不相等。谢谢你的更正。@Marek Sebera,我使用INT。按位或
然后按位非~
。如何获得b1和b2?字节
?位[]
?整数[]
?字符[]
?你确定你没有要求使用XNOR吗?根据你的例子,b1 XNOR b2是11…@Tung,对不起,我要求使用XNOR。但是,主要问题不是门的位长度不相等。谢谢你的更正。@Marek Sebera,我使用INT。对不起,我忘了提到,在Java中是否可以从t执行此位NOR操作他离开时总是不移位或添加位(B2的位更少)?B1和B2是如何表示的?(int、boolean[],String…)或者您可能还没有选择表示法,也需要建议?抱歉,延迟了,请更新答案。如果您需要更多信息,请更好地解释值是如何表示的(输入布尔来自何处,如何将它们存储在int中,等等)。对不起,我忘了提到,在Java中,是否可以在不移位或添加位的情况下从左侧执行此按位NOR操作(B2的位较少)?B1和B2是如何表示的?(int,boolean[],String…)或者您还没有选择表示法,还需要建议?抱歉,延迟了,请更新答案。如果您需要更多信息,请更好地解释值的表示方式(输入布尔值来自何处,如何将其存储在int中等)。谢谢,但它提供了