簡體   English   中英

如何將java中的long值設置為2^64-1?

[英]how to set a long value in java to 2^64-1?

Java 不支持無符號整數,但如果將long s 視為無符號,則可以很好地進行乘法運算。

但是將long2^63+12^64-1的最佳方法是什么?

Long.MAX_VALUE0x7fffffffffffffffL

我知道的唯一方法是

long maximumUnsigned = new BigInteger("18446744073709551615").longValue() (其中是18446744073709551615 = 2^64-1

long maximumUnsigned = -1也可以,但我發現這有問題,可能會誘使讀者認為它是負面的。

似乎沒有完美的解決方案。 因為,正如你所說, Long.MAX_VALUE0x7fffffffffffffffL ,我想我也只是把F放在第一個位置:

    long maxUnsignedLong = 0xFFFF_FFFF_FFFF_FFFFL;
    System.out.println(Long.toUnsignedString(maxUnsignedLong));

輸出:

18446744073709551615

好處:

  1. 對於知道long是 64 位並且熟悉十六進制數的讀者來說,它比 18446744073709551615 更容易閱讀。
  2. 它不會給讀者留下數字應該被理解為負數的印象(無論 Jon Skeet負數當然是正確的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM