我正在尝试使用这个Java语句进行XOR,但它会产生意外的输出。
System.out.println(0x15C ^ 0x11B);
输出:
71
但是,如果我转到http://www.jdejong.net/tools/bitwisecalculator.php,则输出为47。
如果我手动执行此操作,则会得到结果0x47。
0x15C: 000101011100
0x11B: 000100011011
---------------------- XOR
0x47: 000001000111
如何使用Java生成47(我认为是正确的答案)?
修改 回答: 忘了它是小数,而不是十六进制。屏幕截图的XOR结果使我感到困惑,因为它没有0x表示法。
答案 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