您好,登錄后才能下訂單哦!
【1】原碼、補碼、反碼是機器存儲一個具體數字的編碼方式。
【2】原碼是符號位+真值的絕對值,第一位表示符號位,其余位表示值。
例如:
一個8位的二進制
0000 0001(1原碼)
1000 0001(-1原碼)
8位二進制的表示范圍是
1111 1111-0111 1111(-127,127)
正數的反碼是本身,負數的反碼是在其原碼的基礎上,符號位不變其余取反。
也就是說
0000 0001(1原碼)----反碼相同 0000 0001(1反碼)
1000 0001(-1原碼)----反碼符號位不變其余取反1111 1110(-1反碼),這個數就看不出表示的是啥了,需要轉成原碼才能看的出。
正數的補碼還是本身,
負數的補碼是在原碼的基礎上,或的反碼最后+1.
【總結】
正數--反碼(自身)--補碼(自身)
負數--反碼(符號位不變,其余取反)--補碼(反碼+1)
【例如:】
byte b = (byte) 130;
b = ?
【分析】
1、計算機中的運算都是補碼進行的
2、計算數據的二進制,130(默認int類型4個字節),即1000010(1個字節)
補成4位字節后為:
00000000 00000000 00000000 1000010(正數-反碼-原碼)
byte截取一個字節即(1000010)---(補碼)
3、補碼轉反碼 10000001
4、反碼轉原碼 1 1111110(-126)
【拓展】
這里我們分析
byte b = (byte) 130;
b = -126;(byte-128:人為規定-0就是-128-----127)
也就是說是一個循環,也就是說
127(127)
128 (-128)
129(-127)
130(-126)
131(-125)
.....
400(-112)
計算思路:
從-128--127 共256個數
400-256=144(-112)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。