Java中Byte的范圍是如何計算的?
在說byte之前,我們先來說說比特,比特是表示信息的最小單位,是二進制數的一位包含的信息或2個選項中特別指定1個的需要信息量。一般來說,n比特的信息量可以表現出2的n次方種選擇。而byte意為“字節”,是計算機文件大小的基本計算單位。1byte=8bits,兩者換算是1:8的關系。1bit 只能有一個值,0 或者 1。
在《Head First Java》中的描述byte(基本數據類型,裝配類型為Byte)作為Java中4中基本整數類型的一種,其它三種是long、int、short。通過前面的了解,byte是1個字節,也就是8位,以杯子類比,每種整型類型變量有固定的位數(杯子大小):byte,8bits,-128~127;short,16bits,-32768~32767;int,32bits,-2147483648~2147483647;long,64bits,-很大~+很大。
具體的關于byte的計算方式,推薦以下兩種,混合著進行理解記憶。
第一種是機器內存儲結構的分析:
在計算機內,定點數有3種表示法:原碼、反碼和補碼
[原碼]二進制定點表示法,即最高位為符號位,“0”表示正,“1”表示負,其余位表示數值的大小。
[反碼]表示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
[補碼]表示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。
計算機數據是用補碼表示的,正數的補碼就是它的原碼,而負數的補碼是將其原碼(取絕對值后的原碼)取反加1得到的。
第二種是byte概念意義上的理解:
1.確定byte是1個字節,也就是8位
2.最大的應該是0111 1111,因為第一位是符號位,0表示正數
3.最小的應該是1000 0000(1111 1111是是負數-1的補碼)
4.0111 1111即127
5.1000 0000按照上面的解釋為先減一,得到0111 1111,然后按位取反得到1000 0000,該結果為欲求負數的絕對值,所以結果是-128(和概念反著來求出該負數)。
作者:夕陽雨晴,歡迎關注我的頭條號:偶爾美文,主流Java,為你講述不一樣的碼農生活。