^操作符在java中是如何工作的?补充的

^操作符在java中是如何工作的?补充的,java,operators,xor,Java,Operators,Xor,类似的问题也被问到了 但我觉得有些东西不见了 根据@Carl Smotricz的例子: “定义按位异或的一种简单方法是,在两个输入数字不同的每个地方,结果都有一个1。” 因此: 0101^0100=0001(5^4=1) 这一点很清楚,但有以下几点: 15^4基于这种逻辑: 1111 一百 应该是0111,但编译器给出:1011 即使我们使用: 逻辑或: 假| |假:假 假|真:真 真|假:真 true | | true:true对采用不同位数表示的数字应用逐位运算符时,需要添加前导零,以便它们

类似的问题也被问到了

但我觉得有些东西不见了

根据@Carl Smotricz的例子: “定义按位异或的一种简单方法是,在两个输入数字不同的每个地方,结果都有一个1。”

因此:

0101^0100=0001(5^4=1)

这一点很清楚,但有以下几点:

15^4基于这种逻辑: 1111 一百

应该是0111,但编译器给出:1011

即使我们使用: 逻辑或:

假| |假:

假|真:

真|假:


true | | true:true

对采用不同位数表示的数字应用逐位运算符时,需要添加前导零,以便它们“对齐”

在您的15和4示例中:

15确实是
1111
。4是
100
,您需要将前导零添加到“pad”中,最多四位,即
0100
。现在,它们之间的xoring应该在两位不同的任何位置给出一个
1
1011
,这是您自己尝试时观察到的结果。

15^4=>1111^0100=1011
。你似乎等于4,等于100,等于1000。这是不正确的,因为它将有前导0,而不是尾随0。不要忘记前导0,和或!=XOR。可能的副本