[英]how to set a long value in java to 2^64-1?
Java 不支持无符号整数,但如果将long
s 视为无符号,则可以很好地进行乘法运算。
但是将long
从2^63+1
为2^64-1
的最佳方法是什么?
Long.MAX_VALUE
是0x7fffffffffffffffL
;
我知道的唯一方法是
long maximumUnsigned = new BigInteger("18446744073709551615").longValue()
(其中是18446744073709551615 = 2^64-1
)
做long maximumUnsigned = -1
也可以,但我发现这有问题,可能会诱使读者认为它是负面的。
似乎没有完美的解决方案。 因为,正如你所说, Long.MAX_VALUE
是0x7fffffffffffffffL
,我想我也只是把F
放在第一个位置:
long maxUnsignedLong = 0xFFFF_FFFF_FFFF_FFFFL;
System.out.println(Long.toUnsignedString(maxUnsignedLong));
输出:
18446744073709551615
好处:
long
是 64 位并且熟悉十六进制数的读者来说,它比 18446744073709551615 更容易阅读。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.