按位运算符 - C ++和Java之间的差异

时间:2017-01-06 23:26:40

标签: java c++ bit-manipulation

我正在努力将一个C ++项目移植到Java上,而且我已经陷入了一个看似非常简单的按位操作,但我在C ++中获得的结果与Java相比有所不同。请考虑以下事项。

long xor = 2654435769L;
xor ^= xor << 0x0B;

在C ++中,(正确)值为637186​​489,但在Java中为5433770815929。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

java中的long数据类型是64位。请尝试使用int。基本上,无论您在C ++中使用long还是int,只能在Java中使用int。如果你在C ++中有long long,那么你在Java中使用long

编辑:你的标题有点模糊。您应该重新编写它,以便人们知道您正在尝试将C ++代码转换为Java。