VB .NET与Java的计算方式不同
有人可以向我解释为什么.net正在以不同的方式计算
Java
等式 (-1646490243 << 4) + 3333 ^ -1646490243 + -957401312 ^ (-1646490243 >> 5) + 4 Java将其计算为 1173210151 .Net计算为 -574040108 我的问题是我需要.Net来计算与Java相同的内容,因为我正在移植一个解密函数,如果计算方式不同,那么解密就不会是正确的. 任何帮助,将不胜感激. –Update– 谢谢你们,Xor是我应该使用的.另外,当Integer数字太大时,需要解决Java没有抛出异常的问题. Xor给出-3121757145的结果 (-1646490243 << 4) + 3333 Xor -1646490243 + -957401312 Xor (-1646490243 >> 5) + 4 将此与我找到的链接的答案相结合 – Java sum 2 negative numbers.给出与Java相同的结果 -3121757145 + 2 ^ 32 = 1173210151
我检查了运算符优先级表
Java和
Visual Basic,它们与表达式中的运算符相同.所以这不是优先问题.
但请注意,在Visual Basic中,^是exponentiation的运算符,而Xor是exclusive or的运算符.这与Java不同,后者使用^运算符作为独占运算符,或者没有运算符用于求幂运算.表达式中的所有其他运算符在两种语言中都是相同的 我无法从代码中看出该片段是Java中的片段还是Visual Basic中的片段 – 我猜是Java中的片段.如果是这样的话,你很可能会混淆这个或者;尝试在Visual Basic代码中用Xor替换^,看看是否能解决问题: (-1646490243 << 4) + 3333 Xor -1646490243 + -957401312 Xor (-1646490243 >> 5) + 4 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |