簡體   English   中英

另一種獲取最大值的整數的方法

[英]Alternate way of get an Integer of Max value

我一直在問我的導師找得到一個的方式Integer java中最大值,而無需使用實際的詞Integer ,隨着FloatDouble和數字0-9。 他還鼓勵我們使用網絡查找答案。

我寧願不發布代碼,但實際上只不過是說明上面的注釋,一些類和方法代碼以及用於斷言i==Integer.MAX_VALUE的斷言行。

我花了幾天的時間進行研究,得出的結論是,我需要以某種方式使用Long來生成一個值,該值在轉換為int時將包裹到Integer.MAX_VALUE ,我只是無法弄清楚實際的代碼去做這個。 你能幫忙的話,我會很高興。

您不需要很長時間...

例如,您可以使用~0 >>> 1 ; ~0是0xffffffff的,由1右移而不執行符號位將被0x7FFFFFFF的,這是Integer.MAX_VALUE

注意使用>>>代替>> ; >>在移位時將“攜帶”符號位,這不是您想要的。

int i = 0b01111111111111111111111111111111;

它是Java中最大Integer值的二進制表示形式。 有32位,第一個設置為零,因為Java使用二進制補碼實現負值。

您必須知道要獲得最大的int值是:

  • 一個整數由4個字節組成
  • 整數的符號由最高位(從0開始計數的第31位)表示
  • 負整數確實將第31位設置為1
  • 正整數確實將位31設置為0
  • 正整數和負整數使用二進制補碼表示

有了這些知識,您就可以使用位運算來計算最大整數值。 大整數值的所有位都設置為1(第31位除外)。因此,將~ operator (按位非)設置為0會導致將所有32位設置為1。使用>>> operator將所有位向右移一位。 (將第31位設置為0)將導致最大可能的整數。

int max = (~0) >>> 1;

暫無
暫無

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

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