gpt4 book ai didi

java - VB .NET 的计算方式与 Java 不同

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:26:17 25 4
gpt4 key购买 nike

谁能给我解释一下为什么 .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

最佳答案

我检查了 Java 的运算符优先级表和 Visual Basic ,对于表达式中的运算符,它们是相同的。所以这不是优先级的问题。

请注意,在 Visual Basic 中 ^exponentiation 的运算符,而 Xorexclusive or 的运算符.这与 Java 不同,Java 使用 ^ 运算符作为异或运算符,并且没有求幂运算符。表达式中的所有其他运算符在两种语言中都是相同的

我无法从代码中判断该代码片段是 Java 中的代码片段还是 Visual Basic 中的代码片段 - 我猜是 Java 中的代码片段。如果是这种情况,您很可能混淆了独占或;尝试在 Visual Basic 代码中将 ^ 替换为 Xor 并查看是否可以解决问题:

(-1646490243 << 4) + 3333 Xor -1646490243 + -957401312 Xor (-1646490243 >> 5) + 4

关于java - VB .NET 的计算方式与 Java 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13338043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com