[英]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.