java byte最大值最小值問題


1.計算機編碼

1.1 原碼、反碼和補碼

在計算機內,定點數有3種表示法:原碼、反碼和補碼。
原碼:就是二進制定點表示法,即最高位為符號位,“0”表示正,“1”表示負,其余位表示數值的大小。
反碼:表示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
補碼:表示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。

原碼、反碼不能直接進行數值計算。

1.2 計算機數值存儲

在計算機中,數值均已補碼形式存儲。

2.計算步驟

僅以byte為例進行闡述,byte為一字節8位,最高位是符號位。

最大值是01111111(補碼),補碼即原碼:
最大值為:2^0+2^1+2^2+2^3+2^4+2^5+2^6=(1-2)2^7/(1-2)=2^7-1=127

最小值是10000000(補碼),首先計算反碼(補碼-1):
01111111
然后計算原碼:
10000000
最大值為:-2^7=-128

3.等比數列

首項是a1,公比是q(q≠1),則Sn=a1(1-q^n)/(1-q);

4.byte無符號表示

byte a = (byte)234;
打印出來的結果為-22,看看原因:首先byte范圍-128~127,打印出其他值也屬正常。

234的二進制位:
11101010

計算機會把它當成負數,首先計算其反碼:
11101001

然后計算其原碼:
10010110

原碼為-22


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM