加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-17 00:08:41 所属栏目:大数据 来源:网络整理
导读:有人可以向我解释为什么.net正在以不同的方式计算 Java 等式 (-1646490243 4) + 3333 ^ -1646490243 + -957401312 ^ (-1646490243 5) + 4 Java将其计算为 1173210151 .Net计算为 -574040108 我的问题是我需要.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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读