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,?-27. ? ?*/ public?static?final?byte???MIN_VALUE?=?-128; /** ? ?*?A?constant?holding?the?maximum?value?a?{@code?byte}?can ? ?*?have,?27-1. ? ?*/ ? public?static?final?byte???MAX_VALUE?=?127;
以上就是小編今天的分享了,希望可以幫助到大家。