有人能解释一下为什么.NET和Java计算结果不同吗?
方程式:
(-1646490243 << 4) + 3333 ^ -1646490243 + -957401312 ^ (-1646490243 >> 5) + 4
Java将其计算为
1173210151
.Net计算为
-574040108
我的问题是,我需要.Net计算与Java相同,因为我正在移植解密函数,如果计算不同,解密就不会正确。任何帮助都将不胜感激。
--更新--
谢谢大家,Xor是我应该使用的。还需要解决Java在整数数字太大时不抛出异常的问题。
Xor的结果为-3121757145。
(-1646490243 << 4) + 3333 Xor -1646490243 + -957401312 Xor (-1646490243 >> 5) + 4
结合我找到的这个链接中的答案:Java sum 2 negative numbers。与Java给出了相同的结果。
-3121757145 + 2 ^ 32 = 1173210151
^
是XOR
运算符。我不熟悉 VB,但一些 Google 搜索提示说Xor
是 xor 运算符,而^
则是用于 VB 的指数运算。这可能是问题所在吗? - irrelephant