1. 程式人生 > 其它 >java中int的最值解析

java中int的最值解析

  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(最小值)