[英]Alternate way of get an Integer of Max value
我一直在問我的導師找得到一個的方式Integer
java中最大值,而無需使用實際的詞Integer
,隨着Float
, Double
和數字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值是:
有了這些知識,您就可以使用位運算來計算最大整數值。 大整數值的所有位都設置為1(第31位除外)。因此,將~ operator
(按位非)設置為0會導致將所有32位設置為1。使用>>> operator
將所有位向右移一位。 (將第31位設置為0)將導致最大可能的整數。
int max = (~0) >>> 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.