1. 程式人生 > >java中為什麽byte的取值範圍是-128到+127

java中為什麽byte的取值範圍是-128到+127

進制數 符號位 為什麽 絕對值 www .html tar 同學 自己

概念:java中用補碼表示二進制數,補碼的最高位是符號位,最高位為“0”表示正數,最高位為“1”表示負數。
正數補碼為其本身;
負數補碼為其絕對值各位取反加1;
例如:
+21,其二進制表示形式是00010101,則其補碼同樣為00010101
-21,按照概念其絕對值為00010101,各位取反為11101010,再加1為11101011,即-21的二進制表示形式為11101011

步驟:
1、byte為一字節8位,最高位是符號位,即最大值是01111111,因正數的補碼是其本身,即此正數為01111111
十進制表示形式為127
2、最大正數是01111111,那麽最小負是10000000(最大的負數是11111111,即-1)

3、10000000是最小負數的補碼表示形式,我們把補碼計算步驟倒過來就即可。10000000減1得01111111然後取反10000000
因為負數的補碼是其絕對值取反,即10000000為最小負數的絕對值,而10000000的十進制表示是128,所以最小負數是-128
4、由此可以得出byte的取值範圍是-128到+127
5、說明:各個類型取值範圍的計算方法與此大致相同,感興趣的同學可以自己試著計算

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

原文地址:http://www.cnblogs.com/jack1208-rose0203/p/5713210.html

java中為什麽byte的取值範圍是-128到+127