原碼反碼和補碼
計算機常見數(shù)據(jù)的分類
機器數(shù)&機器數(shù)的真值
原碼
反碼
補碼
-
擴(kuò)展
計算機中常見數(shù)據(jù)的分類
-
數(shù)值類型
- 整數(shù)
- 浮點數(shù)
-
非數(shù)值類型
- 圖片
- 音頻
- 視頻
- 文字
機器數(shù)
數(shù)值在計算機中的二進(jìn)制表示形式
注意:==機器數(shù)==是帶==有符號==的 最高位是符號位,使用==0表示正數(shù)==剩瓶,==1表示負(fù)數(shù)==
5>0000 0101
一個數(shù)據(jù)使用表示時崔梗,第一位是符號位低零,剩余是有效位妹沙。
字有16位借浊,1位是符號位咐低,15位是有效位
int>整數(shù) 4個字節(jié) 32位 取值范圍:-231~231-1
-2147483648~2147483647
long>長整型8個字節(jié)64位 -263~263-1
1000 0111=-7
真值
機器數(shù)所對應(yīng)的二進(jìn)制的真正數(shù)值
==1==000 0111=-7
==0==000 1111=15
原碼
原碼就是符號位+真值的絕對值
正數(shù):符號位 有效位 +11>000 1011
負(fù)數(shù):符號位 有效位 -15>取絕對值15>1000 1111
反碼
正數(shù):正數(shù)的反碼=原碼
負(fù)數(shù):符號位不變痒筒,其余各位逐一取反
[圖片上傳失敗...(image-c698e-1594210556569)]
補碼
正數(shù)的原碼=反碼=補碼
負(fù)數(shù):在負(fù)數(shù)反碼的基礎(chǔ)上+1
擴(kuò)展
為什么需要反碼和補碼?
在設(shè)計計算機時岭皂,只涉及了加法器郊霎,沒有設(shè)計減法器
反碼:解決了只設(shè)計加法運算的問題
缺點:正負(fù)相加0的表示不唯一
1-1=1+(-1)
1=0000 0001【反碼】
-1=1000 0001【原碼】
-1=1111 1110【反】
補碼【高位溢出】
1=0000 0001【補碼】
-1=1111 1111【補碼】
? 0000 0000
使用條件:不得超過表達(dá)范圍
使用補碼計算
32+12=44
因為負(fù)數(shù)的補碼不能直接讀出結(jié)果,但是原碼可以爷绘,將原碼轉(zhuǎn)原碼书劝,才能讀出結(jié)果
原碼:補碼的補碼:將補碼當(dāng)原碼求補碼
計算規(guī)則“符號位不變,其余取反土至,然后加1.
求-128 的補碼
一個字節(jié)不可以表示-128的原碼
1000 0000 1000 0000【-128的原碼】
求反碼
1111 1111 0111 1111【反碼】
0000 0000 0000 0001【加1】
1111 1111 1000 0000【-128的補碼】