java中的Int範圍
阿新 • • 發佈:2019-01-09
二進位制值(1位元組) 十進位制值
1000 0000 -128
1000 0001 -127
1000 0010 -126
1000 0011 -125
... ...
1111 1110 -2
1111 1111 -1
首先我們看到,從-1到-128,其二進位制的最高位都是1(表中標為紅色),正如我們前面的學。
然後我們有些奇怪地發現,1000 0000 並沒有拿來表示 -0;而1000 0001也不是拿來直觀地表示-1。事實上,-1 用1111 1111來表示。
怎麼理解這個問題呢?先得問一句是-1大還是-128大?
1000 0000 -128
1000 0001 -127
1000 0010 -126
1000 0011 -125
... ...
1111 1110 -2
1111 1111 -1
首先我們看到,從-1到-128,其二進位制的最高位都是1(表中標為紅色),正如我們前面的學。
然後我們有些奇怪地發現,1000 0000 並沒有拿來表示 -0;而1000 0001也不是拿來直觀地表示-1。事實上,-1 用1111 1111來表示。
怎麼理解這個問題呢?先得問一句是-1大還是-128大?
當然是 -1 大。-1是最大的負整數。以此對應,計算機中無論是字元型別,或者是整數型別,也無論這個整數是幾個位元組。它都用全1來表示 -1。比如一個位元組的數值中:1111 1111表示-1,那麼,1111 1111 - 1 是什麼呢?和現實中的計算結果完全一致。1111 1111 - 1 = 1111 1110,而1111 1110就是-2。這樣一直減下去,當減到只剩最高位用於表示符號的1以外,其它低位全為0時,就是最小的負值了,在一位元組中,最小的負值是1000 0000,也就是-128。
Java中的Int的最大最小是怎麼算出來的呢?
int型的最大值:2147483647 16進位制:0x7FFF FFFF
int型的最小值:-2147483648 16進位制:0x8000 0000
實際上:在java中int型佔4個位元組,那麼它能表示的就是32位的範圍。但是java不像C/C++那樣分unsigned(無符號數和有符號數)所有在java中正負數各佔一半:即2的31次方減1是最大的int型的範圍,負的2的31次方是最小的負數範圍。