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

Roc*_*Lee -1 java

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

System.out.println(0x15C ^ 0x11B);
Run Code Online (Sandbox Code Playgroud)

输出:

71
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

0x15C: 000101011100
0x11B: 000100011011
---------------------- XOR
0x47:  000001000111  
Run Code Online (Sandbox Code Playgroud)

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


编辑: 答案:忘了它是小数,而不是十六进制.屏幕截图的XOR结果让我困惑,因为它没有0x表示法.

DaJ*_*kie 12

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

System.out.println(String.format("%#x",0x15C ^ 0x11B));
Run Code Online (Sandbox Code Playgroud)


mer*_*ike 7

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