gpt4 book ai didi

java long 数据类型转换为无符号值

转载 作者:行者123 更新时间:2023-12-01 16:32:35 25 4
gpt4 key购买 nike

我正在将一些 C++ 代码移植到 Java 代码。

java中没有可以容纳64位的无符号数据类型。

我有一个哈希码,它存储在Java的long数据类型中(当然是有符号的)。

long vp = hashcode / 38; // hashcode is of type 'long'

由于此处的 38 大于 2,因此得到的数字可以安全地用于 java 中的任何其他算术。

问题是如果“hashcode”中的有符号位设置为 1 会怎样。我不想在变量 vp 中得到负值。我想要一个正值,就好像数据类型是无符号的一样。

P.S:由于性能问题,我不想使用 Biginteger 来实现此目的。

最佳答案

Java 的原始整型被认为是有符号的,对此您无能为力。但是,根据您的需要,这可能并不重要。

由于整数都是以二进制补码形式完成的,因此有符号和无符号在二进制级别上完全相同。不同之处在于您如何解释它们以及在某些操作中。具体来说,右移、除法、模数和比较有所不同。无符号右移可以使用 >>> 运算符来完成。只要您不需要缺少的运算符之一,您就可以完美地使用 long

关于java long 数据类型转换为无符号值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13115015/

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