Java中Byte的範圍是如何計算的?
在這裡我們需要先了解另一個單位:bit “位元”,
bit是計算機進行資料儲存的最小單位,
計算機內部利用二進位制儲存資料,一bit(位元)就代表一位二進位制。即一個bit就代表一個0或1。
而Byte(“位元組”)是計算機進行資料儲存的基本單位。
一Byte有八位二進位制也就是
1Byt = 8bit
資料的儲存又分為有符號和無符號數,有符號數二進位制的最後高代表符號,
0代表+(正),1代表-(負)
,如:有符號數
0
11 轉換為十進位制為2^0+2^1=3,無符號
1
11轉換為十進位制則為-3。(有下劃線的數字代表符號位,後面同樣如此)
然後我們開始正式介紹Byte範圍的計算
當Byte無符號時
Byte的範圍可以由二進位制表示為 0000 0000 ~ 1111 1111,
將二進位制轉化為十進位制:
0000 0000 = 0;
1111 1111 = 2^0+2^1+2^2+2^3+2^4+2^5+2^6+2^7 = 255;
所以Byte的取值範圍為 0 ~255 。
當Byte有符號時
由於最後一位變為了符號位 所以
0 1111111成了最大的數。
將二進位制轉化為十進位制:
0
1111111 = 2^0+2^1+2^2+2^3+2^4+2^5+2^6 = 127;
負數需要用補碼錶示,1 1111111的
絕對值
取反得到0000000 轉換為十進位制為 0加一取反則為補碼 :
-1
將1 0000000的
絕對值
取反得到11111111 轉換為十進位制為 127
再加一取反為
-128
所以Byte有符號時的取值範圍為 -128~127
java採用的有符號儲存,所以java中Byte的取值範圍採用有符號時計算。