? ? ? ? 原碼、反碼和補(bǔ)碼是計(jì)算機(jī)中表示有符號整數(shù)的三種不同的二進(jìn)制表示形式。它們的理解和原理涉及了計(jì)算機(jī)內(nèi)部整數(shù)表示的數(shù)學(xué)概念和編碼規(guī)則。
十進(jìn)制數(shù) | 原碼 | 反碼 | 補(bǔ)碼 |
+5 | 00000101 | 00000101 | 00000101 |
+4 | 00000100 | 00000100 | 00000100 |
+3 | 00000011 | 00000011 | 00000011 |
+2 | 00000010 | 00000010 | 00000010 |
+1 | 00000001 | 00000001 | 00000001 |
+0 | 00000000 | 00000000 | 00000000 |
-0 | 10000000 | 11111111 | 00000000 |
-1 | 10000001 | 11111110 | 11111111 |
-2 | 10000010 | 11111101 | 11111110 |
-3 | 10000011 | 11111100 | 11111101 |
-4 | 10000100 | 11111011 | 11111100 |
-5 | 10000101 | 11111010 | 11111011 |
? ? ? ? 對于正數(shù),原碼、反碼和補(bǔ)碼都是相同的。但是對于負(fù)數(shù),反碼是將對應(yīng)正數(shù)的二進(jìn)制位按位取反得到的,而補(bǔ)碼是在反碼的基礎(chǔ)上再加1。補(bǔ)碼的最高位為1,表示負(fù)數(shù)。
一、原碼 :
原碼是最直觀的整數(shù)表示形式。在原碼中,一個(gè)數(shù)用二進(jìn)制表示,其中最高位表示符號位,0表示正數(shù),1表示負(fù)數(shù),其余位表示數(shù)值的絕對值。例如,對于一個(gè)n位的二進(jìn)制數(shù),最高位是符號位,剩下的n-1位用來表示數(shù)值。
例如,+5的4位原碼表示是:0101,-5的4位原碼表示是:1101。
原碼的優(yōu)點(diǎn)是簡單直觀,易于理解。但它有兩個(gè)問題:存在兩個(gè)零(正零和負(fù)零)以及在進(jìn)行加法和減法運(yùn)算時(shí)需要額外處理符號位,使得運(yùn)算過程較為繁瑣。
二、反碼:
當(dāng)-2+1時(shí),用原碼計(jì)算:
10000010 (-2)?
+ 00000001 (+1)
-----------
10000011 (-3)
預(yù)期是-1,結(jié)果是-3
在原碼表示中,最高位是符號位,為1表示負(fù)數(shù)。當(dāng)進(jìn)行加法運(yùn)算時(shí),如果最高位產(chǎn)生了進(jìn)位,就會(huì)導(dǎo)致溢出。在這個(gè)例子中,加法過程中最高位產(chǎn)生了進(jìn)位,導(dǎo)致結(jié)果的最高位為1,表示負(fù)數(shù)。而實(shí)際上,正確的結(jié)果應(yīng)該是 -1,而不是 -3。
為了解決這個(gè)問題,人們引入了反碼表示形式。在反碼中,負(fù)數(shù)的表示是將其對應(yīng)正數(shù)的二進(jìn)制位按位取反,即0變?yōu)?,1變?yōu)?。正數(shù)的表示和原碼相同。
例如,+5的4位原碼表示是:0101,+5的4位反碼表示是:0101,
? ? ? ? ? ? -5的4位原碼表示是:1101,-5的4位反碼表示是:1010。
這時(shí)候當(dāng)-2+1時(shí),用反碼計(jì)算:
11111101 (-2)
+ 00000001 (+1)
-----------
11111110 (-1)
預(yù)期是-1,結(jié)果是-1
三、補(bǔ)碼 :
零的表示不唯一,原碼中,零有兩個(gè)表示,+0和-0,這增加了零的處理復(fù)雜性。
為了解決這個(gè)問題,并簡化計(jì)算機(jī)內(nèi)部的加法和減法運(yùn)算,補(bǔ)碼表示形式被廣泛采用。在補(bǔ)碼中,正數(shù)的表示與原碼相同,而負(fù)數(shù)的表示是通過對其對應(yīng)正數(shù)的反碼加1來得到。補(bǔ)碼解決了兩個(gè)零的問題,并且負(fù)數(shù)的表示是唯一的。
補(bǔ)碼的關(guān)鍵性質(zhì)是:負(fù)數(shù)的補(bǔ)碼加上該數(shù)的補(bǔ)碼(加1)等于0,即 N + (-N) = 0。這是因?yàn)樵谘a(bǔ)碼的表示下,數(shù)值范圍是有限的,超出范圍的數(shù)將溢出。
例如,+5的4位反碼表示是:0101,-5的4位反碼表示是:1010,
? ? ? ? ? ? +5的4位補(bǔ)碼表示是:0101,-5的4位補(bǔ)碼表示是:1011。文章來源:http://www.zghlxwxcb.cn/news/detail-610847.html
-2 + 3 = ?文章來源地址http://www.zghlxwxcb.cn/news/detail-610847.html
11111110 (-2) ?
+ 00000011 (+3)
-----------
00000001 (+1)
到了這里,關(guān)于原碼,反碼,補(bǔ)碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!