關於java int 最大值為什么是:2147483647
int 類型數占4個byte.
1byte=8bit
也就是有32個bit占位符
可以用位移運算得出
int tmp = 0;
for (int i = 0; i <= 30; i++)
tmp = tmp + (1 << i);
System.out.println(tmp);
不是32位么,怎計算只到30?
由於Int最高位,也就是第32不是用來計算value,而是用來表示此值是正數還是負數,0表示正數,1表示負數。不參與value計算。
所以只有31位,那還差一位,二進制換算,是從0開始的,在移位過程中,移到30位,就是第31bit值。