byte取值範圍,java
java byte取值範圍是什麼,讓我們一起了解一下?
java中byte類型數據的取值範圍爲-128~127,因爲在java中byte類型的數據,是存儲在計算機內存中佔1個字節(即0或者1表示的8位二進制數),數據在計算機中都是按照補碼形式表現,因此有了原碼、反碼、補碼的基本概念。
那麼-128 和 127 這兩個數是怎麼計算的呢?
首先我們要先了解原碼、反碼、補碼的基本概念。
1、原碼就是二進制定點表示法,即最高位爲符號位,“0”表示正,“1”表示負,其餘位表示數值的大小。
2、反碼錶示法規定:正數的反碼與其原碼相同,負數的反碼是對其原碼逐位取反,但符號位除外。
3、補碼錶示法規定:正數的補碼與其原碼相同,負數的補碼是在其反碼的末位加1。
然後再來了解原碼、反碼、補碼的對應關係?
帶符號的數據二進制表示的形式最高位代表符號類型,其中,0表示正數,1表示負數。
對於正整數而言,原碼、反碼和補碼是相同的,比如127。
符號位 數值位
原碼錶示爲: 0 1111111
反碼錶示爲: 0 1111111
補碼錶示爲: 0 1111111
即127在計算機中表示爲01111111。
對於負整數而言,反碼錶示爲原碼的最高位不變,其他位反轉(就是0變爲1,1變爲0),補碼錶示反碼加1。比如-127。
符號位 數值位
原碼錶示爲: 1 1111111
反碼錶示爲: 1 0000000
補碼錶示爲: 1 0000001
即-127在計算機中表示爲10000001。
那麼最大範圍和最小範圍的計算是怎麼來的?
1、最大範圍
這個比較簡單就是計算01111111的十進制數,透過二進制計算十進制:
max = (2^0+2^1+2^2+...+2^6),很容易看出這是一個等比數列,透過等比數列求和公式計算爲:max=2^0(1-2^7)/1-2=2^7-1=127
2、最小範圍
對於正整數0,二進制表示爲00000000
對於負整數-0,二進制表示爲100000000(補碼) 10000000(原碼)
由於正整數0和負整數-0相等,但是它們的二進制表示形式卻不一樣並且-0還是9位二進制表示的,所以爲了解決這個問題,就讓10000000表示爲-128即min=-128。
具體代碼展示如下:
/**這裏是Java源碼 * A constant holding the minimum value a {@code byte} can * have, -2<sup>7</sup>. */public static final byte MIN_VALUE = -128;/** * A constant holding the maximum value a {@code byte} can * have, 2<sup>7</sup>-1. */ public static final byte MAX_VALUE = 127;
以上就是小編今天的分享了,希望可以幫助到大家。