Java中的异或“^”产生了意想不到的结果

时间:2014-09-11 21:24:41

标签: java

我正在尝试使用这个Java语句进行XOR,但它会产生意外的输出。

System.out.println(0x15C ^ 0x11B);

输出:

71

但是,如果我转到http://www.jdejong.net/tools/bitwisecalculator.php,则输出为47。

enter image description here

如果我手动执行此操作,则会得到结果0x47。

0x15C: 000101011100
0x11B: 000100011011
---------------------- XOR
0x47:  000001000111  

如何使用Java生成47(我认为是正确的答案)?


修改 回答: 忘了它是小数,而不是十六进制。屏幕截图的XOR结果使我感到困惑,因为它没有0x表示法。

4 个答案:

答案 0 :(得分:12)

输出正确。 71是0x47的十进制表示。 如果你想用十六进制打印,我建议使用String.format()。例如:

System.out.println(String.format("%#x",0x15C ^ 0x11B));

答案 1 :(得分:7)

0x47(十六进制)为71(十进制)。如果希望以十六进制表示法打印整数,请使用Integer.toHexString

答案 2 :(得分:1)

     101011100
XOR  100011011
      --------
     001000111

71 (十进制)是正确的

答案 3 :(得分:0)

这只是一个数字。默认情况下,数字以十进制形式打印(基数为10)。

   71 = 0x47