java中int的最值解析
阿新 • • 發佈:2022-04-18
java中int的最大值為十進位制的2147483647,也就是java能進行操作的最大數值,超出就會顯示不正常。針對以下問題進行討論。
1.最大值為什麼是2147483647?
java中int型別佔4個byte,1個byte有8個bit,也就是32個位元組,也叫32位。在位的運算中,最高位為該值正負的判斷,正數為0,負數為1.則int的最大值用二進位制表示為 01111111111111111111111111111111。根據二進位制轉十進位制的計算方法,該值為 2^0 累加到 2^30。用java程式碼表示為;
1 int tmp = 0; 2 for (int i = 0; i <= 30; i++){3 tmp = tmp + (1 << i); 4 }
(1 << i):
<< 無符號左移,相當於前面的數字乘以 2^i; (1 << 1) 就是1乘以2的1次方,(1 << 2) 就是1乘以2的2次方...,
計算得出java中int最大值為 2147483647。
2. (2^0 累加到 2^30次方) 也等於 (2^31 - 1)
等比數列前n專案計算為 Sn = a1(1 - q^n) / (1 - q)
帶入得 Sn = 1 (1 - 2^31) / (-1)
上述等式成立
3.最小值的計算
32位最小值的二進位制表示為10000000000000000000000000000000,故最小值為 -2^31。根據二進位制的計算,可得如下等式 Integer.MAX_VALUE + 1 = Integer.MIN_VALUE = -2147483648
Integer.MAX_VALUE + 1 = Integer.MIN_VALUE = -2147483648
表示為:
01111111111111111111111111111111(最大值) + 1 = 10000000000000000000000000000000(最小值)