在計(jì)算機(jī)中,為了表示有符號(hào)整數(shù)(即正數(shù)和負(fù)數(shù)),通常采用二進(jìn)制補(bǔ)碼表示法。二進(jìn)制補(bǔ)碼不僅可以表示負(fù)數(shù),還能簡(jiǎn)化計(jì)算機(jī)的加法和減法運(yùn)算。接下來(lái),我們將介紹二進(jìn)制補(bǔ)碼的概念及其計(jì)算方法。
原碼、反碼和補(bǔ)碼
在討論補(bǔ)碼之前,我們先了解一下原碼和反碼的概念。
-
原碼:直接將一個(gè)有符號(hào)整數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),最高位表示符號(hào)(0 代表正數(shù),1 代表負(fù)數(shù))。例如:
+5
?的原碼為?00000101
,-5
?的原碼為?10000101
。 -
反碼:對(duì)于正數(shù),其反碼與原碼相同;對(duì)于負(fù)數(shù),除符號(hào)位外,其余位取反(0 變?yōu)?1,1 變?yōu)?0)。例如:
+5
?的反碼為?00000101
,-5
?的反碼為?11111010
。 -
補(bǔ)碼:對(duì)于正數(shù),其補(bǔ)碼與原碼相同;對(duì)于負(fù)數(shù),其補(bǔ)碼為反碼加 1。例如:
+5
?的補(bǔ)碼為?00000101
,-5
?的補(bǔ)碼為?11111011
。
求補(bǔ)碼的方法
- 求正數(shù)的補(bǔ)碼:直接將正數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),最高位為 0。
- 求負(fù)數(shù)的補(bǔ)碼:先求其絕對(duì)值的二進(jìn)制數(shù),然后取反并加 1。
示例:
求?+5
?和?-5
?的補(bǔ)碼:
+5 的補(bǔ)碼:00000101
-5 的補(bǔ)碼:先求 +5 的二進(jìn)制數(shù):00000101,然后取反:11111010,最后加 1:11111011
補(bǔ)碼的加法運(yùn)算
使用補(bǔ)碼表示法進(jìn)行加法運(yùn)算時(shí),可以將有符號(hào)整數(shù)的加法統(tǒng)一為無(wú)符號(hào)整數(shù)的加法。計(jì)算過程中,如果最高位(符號(hào)位)有進(jìn)位,則忽略該進(jìn)位。
示例:
計(jì)算?+5
?和?-3
?的和:
+5 的補(bǔ)碼:00000101
-3 的補(bǔ)碼:11111101
相加:
00000101
+ 11111101
----------
100000010 (最高位有進(jìn)位,忽略)
結(jié)果為?00000010
,轉(zhuǎn)換為十進(jìn)制數(shù)為?2
。所以,+5
?和?-3
?的和為?2
。
從補(bǔ)碼還原到原碼
為了從補(bǔ)碼還原到原碼,我們可以根據(jù)補(bǔ)碼的符號(hào)位采取不同的方法:
- 如果補(bǔ)碼的符號(hào)位為 0(正數(shù)),則補(bǔ)碼即為原碼。
- 如果補(bǔ)碼的符號(hào)位為 1(負(fù)數(shù)),則將補(bǔ)碼減 1,然后取反,即可得到原碼。
示例:
從補(bǔ)碼?11111011
?還原到原碼:
補(bǔ)碼:11111011
減 1:11111010
取反:10000101
原碼為?10000101
,表示負(fù)數(shù)?-5
。
通過學(xué)習(xí)二進(jìn)制補(bǔ)碼的概念及其計(jì)算方法,我們能夠更好地理解計(jì)算機(jī)中有符號(hào)整數(shù)的表示方式和加減法運(yùn)算。在后續(xù)學(xué)習(xí) ARM 匯編的過程中,我們會(huì)頻繁地使用到補(bǔ)碼表示法,因此熟練掌握補(bǔ)碼的計(jì)算方法至關(guān)重要。
推薦閱讀:
https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA
https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-482068.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-482068.html
到了這里,關(guān)于[ARM匯編]計(jì)算機(jī)原理與數(shù)制基礎(chǔ)—1.1.3 二進(jìn)制補(bǔ)碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!