帶符號(hào)數(shù)的原碼、反碼與補(bǔ)碼_第1頁
帶符號(hào)數(shù)的原碼、反碼與補(bǔ)碼_第2頁
帶符號(hào)數(shù)的原碼、反碼與補(bǔ)碼_第3頁
帶符號(hào)數(shù)的原碼、反碼與補(bǔ)碼_第4頁
帶符號(hào)數(shù)的原碼、反碼與補(bǔ)碼_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一帶符號(hào)數(shù)的原碼、反碼與補(bǔ)碼 所謂帶符號(hào)數(shù),其實(shí)就是一個(gè)二進(jìn)制數(shù)據(jù),它的最高位所代表的是符號(hào),其余位是其“絕對(duì)值”。例如0101_0011,這個(gè)數(shù)據(jù)如果是帶符號(hào)數(shù),那么最高位的0就是代表這個(gè)數(shù)據(jù)為正數(shù),其后的101-0011則代表這個(gè)數(shù)據(jù)的絕對(duì)值,為+83D。如果是1101_0011,則代表-83D。1.1 原碼原碼就是按照正數(shù)的符號(hào)位為0,負(fù)數(shù)的符號(hào)位為1,其他位就是數(shù)據(jù)的絕對(duì)值即可。例如當(dāng)機(jī)器字長(zhǎng)為8bit的二進(jìn)制數(shù)時(shí),它的最高位為符號(hào)位,因此其余的7bit位數(shù)據(jù)的絕對(duì)值。因此原碼所能表示的數(shù)據(jù)范圍是:- (2n-1-1)+(2n-1-1)當(dāng)字長(zhǎng)為8bit,則原碼能表示的范圍就是:-127

2、+127例如83的原碼就是:0101_0011當(dāng)字長(zhǎng)為16bit,則原碼能表示的范圍就是:-32767+32767例如-83的原碼就是:1000_0000_0101_00111.2 反碼對(duì)于一個(gè)帶有符號(hào)位的二進(jìn)制數(shù)來說,正數(shù)的反碼與其原碼相同,負(fù)數(shù)的反碼為其原碼除符號(hào)位外其余各位按位取反。 例如當(dāng)字長(zhǎng)為8bit時(shí),+83D的反碼就是:0101_0011,-83D的反碼就是1010_1100負(fù)數(shù)的反碼與原碼有很大的差別,一般情況下,反碼主要用來當(dāng)做求二進(jìn)制數(shù)補(bǔ)碼的中間形式。反碼所表示的數(shù)據(jù)范圍與原碼相同:- (2n-1-1)+(2n-1-1)1.2 補(bǔ)碼正數(shù)的補(bǔ)碼與其原碼相同,負(fù)數(shù)的補(bǔ)碼為其反碼

3、在最低位加1。例如:X=+101_1011 X原碼=0101_1011 X補(bǔ)碼=0101_1011X=-101_1011 X原碼=1101_1011 X補(bǔ)碼=1010_0101補(bǔ)碼表示的范圍是:- 2n-1+(2n-1-1)當(dāng)字長(zhǎng)為8bit,則原碼能表示的范圍就是:-128+127當(dāng)字長(zhǎng)為16bit,則原碼能表示的范圍就是:-32768+32767關(guān)于0,它有兩個(gè)補(bǔ)碼:正零:0000_0000負(fù)零:1000_0000二通過補(bǔ)碼求解原值的方法1)對(duì)于正數(shù),它的原值與補(bǔ)碼相同;2)對(duì)于負(fù)數(shù),它的原值就是將補(bǔ)碼除符號(hào)位以外,安位取反之后,末位加1。例如【X】=0101_1001,由于最高位是0,因此

4、是正數(shù),原值與補(bǔ)碼相同,也是0101_1001,轉(zhuǎn)換成10進(jìn)制就是+89D。【X】=1101_1010,由于最高位是1,因此原值是負(fù)數(shù),符號(hào)位外其余各位安位取反為:1010_0101,然后末位加1可得到原值:1010_0110,就是-38D。三利用補(bǔ)碼進(jìn)行加減運(yùn)算3.1 加法運(yùn)算對(duì)于加法運(yùn)算,首先需要計(jì)算【X+Y】補(bǔ),然后再經(jīng)過補(bǔ)碼轉(zhuǎn)原碼的方式獲得原值?!綳+Y】補(bǔ)=【X】補(bǔ)+【Y】補(bǔ)例如:X=+011_0011 Y=-010_1001 即:X=+51D, Y=-41D則【X】原=0011_0011 【X】反=0011_0011 【X】補(bǔ)=0011_0011 【Y】原=1010_1001 【Y

5、】反=1101_0110 【Y】補(bǔ)=1101_0111因此【X+Y】補(bǔ)=【X】補(bǔ)+【Y】補(bǔ)=0011_0011+1101_0111=0000_1010,再換原碼為+10D。3.2 減法運(yùn)算對(duì)于減法運(yùn)算,首先需要計(jì)算【X-Y】補(bǔ),然后再經(jīng)過補(bǔ)碼轉(zhuǎn)原碼的方式獲得原值。例如:X=+011_1001 Y=+100_1101 即:X=+57D, Y=+77D則 【X】原=0011_1001 【X】反=0011_1001 【X】補(bǔ)=0011_1001 【-Y】原=1100_1101 【-Y】反=1011_0010 【-Y】補(bǔ)=1011_0011因此【X-Y】補(bǔ)=【X】補(bǔ)+【-Y】補(bǔ)=0011_1001+1

6、011_0011=1110_1100,將【X-Y】補(bǔ)低7位進(jìn)行取反,為1001_0011,再將其末位加1,可得【X-Y】原=1001_0100,轉(zhuǎn)換成10進(jìn)制的數(shù)即為-20D。 由此可知,補(bǔ)碼的意義就是可以把所有的加法與減法都轉(zhuǎn)換成加法進(jìn)行計(jì)算,這樣非常適用于計(jì)算機(jī)進(jìn)行運(yùn)算處理。四關(guān)于求補(bǔ)碼的深入討論通過上面這個(gè)表可知,-128如果用8bit的二進(jìn)制數(shù)表示就是1000_0000,“反碼+1”的計(jì)算方法并不適用-128,所以-128這個(gè)數(shù)比較特殊,需要特殊記憶。其實(shí)求一個(gè)數(shù)的補(bǔ)碼,按照補(bǔ)碼最原始的定義,其實(shí)就是正數(shù)與原碼相同,而負(fù)數(shù)采用“模減去絕對(duì)值”的方法來求,這是求補(bǔ)數(shù)的通用方法,適合于各種

7、進(jìn)制、各種大小數(shù)字。 下面就從計(jì)算機(jī)的角度深入理解補(bǔ)碼的概念。4.1 模與補(bǔ)數(shù)的概念在日常生活當(dāng)中,可以看到很多這樣的事情:把某物體左轉(zhuǎn) 90 度,和右轉(zhuǎn) 270 度,在不考慮圈數(shù)的條件下,最終的效果是相同的;把分針倒撥 20 分鐘,和正撥 40 分鐘,在不考慮時(shí)針的條件下,效果也是相同的;把數(shù)字 87,減去 25,和加上 75,在不考慮百位數(shù)的條件下,效果也是相同的;。上述幾組數(shù)字,有這樣的關(guān)系:90 + 270 = 36020 + 40 = 6025 + 75 = 100式中的 360、60 和 100,就是“模”(也可以理解成“進(jìn)制”)。式中的 90 和 270、20 和 40,以及 2

8、5 和 75,就是一對(duì)“互補(bǔ)”的數(shù)字。知道了“?!?,求某個(gè)數(shù)字的“補(bǔ)數(shù)”,就是輕而易舉的了:如果模為 365,數(shù)字 120 的補(bǔ)數(shù)為:365 - 120 = 245。用補(bǔ)數(shù)代替原數(shù),可把減法轉(zhuǎn)變?yōu)榧臃?。出現(xiàn)的進(jìn)位就是模,此時(shí)的進(jìn)位,就應(yīng)該忽略不計(jì)。4.2 二進(jìn)制數(shù)的模前面說過的十進(jìn)制數(shù) 25 和 75,它們是 2 位數(shù)的運(yùn)算,模是 100,即 1 的后面加上 2 個(gè) 0。如果有 3 位數(shù)參加運(yùn)算,模就是 1000,即 1 的后面加上 3 個(gè) 0。這里的 1000,是十進(jìn)制數(shù)的一千,可以寫成 103,即 10 的 3 次方。推論:有多少位數(shù)參加運(yùn)算,模就是在 1 的后面加上多少個(gè) 0。對(duì)于二進(jìn)制

9、數(shù)字,模也是這樣推算。如果是 3 位二進(jìn)制數(shù)參加運(yùn)算,模就是 1000,即1的后面加上3個(gè)0;那么當(dāng) 8 位二進(jìn)制數(shù)參加運(yùn)算,模就是 1 0000 0000,即1的后面加上8個(gè)0。注意:這里提到的 1、0,都是二進(jìn)制數(shù)。8 位二進(jìn)制數(shù)的??梢园凑帐M(jìn)制寫成 28,即 256。16 位數(shù)二進(jìn)制數(shù)的模,就是 216,按照十進(jìn)制,它就是 65536。4.3 二進(jìn)制數(shù)的補(bǔ)碼前面說過的十進(jìn)制數(shù) 2二進(jìn)制數(shù)的補(bǔ)碼,求二進(jìn)制數(shù)的補(bǔ)數(shù),目的是往計(jì)算機(jī)里面存儲(chǔ)。在計(jì)算機(jī)里面,存放的數(shù)字什么的,都稱為機(jī)器碼;那么二進(jìn)制形式的補(bǔ)數(shù),也就改稱為補(bǔ)碼了。一般情況下,都是以 8 位二進(jìn)制數(shù)來討論補(bǔ)碼,少數(shù)也有用 16 位

10、數(shù)的。計(jì)算時(shí)加上正數(shù),是不需要進(jìn)行求取補(bǔ)數(shù)的;只有進(jìn)行減法(或者加上負(fù)數(shù)),才需要對(duì)減數(shù)求補(bǔ)數(shù)。補(bǔ)碼就是按照這個(gè)要求來定義的:正數(shù)不變,負(fù)數(shù)即用模減去絕對(duì)值。 已知一個(gè)數(shù) X,其 8 位字長(zhǎng)的補(bǔ)碼定義為: (1) 正數(shù):X ; 0 <= X <= +127 (正數(shù)和0的補(bǔ)碼,就是該數(shù)字本身)(2) 負(fù)數(shù):28 |X| ; 128 <= X < 0 (負(fù)數(shù)的補(bǔ)碼,其實(shí)就是用 1 0000 0000(2的8次方),減去該數(shù)字的絕對(duì)值)。例如 X = 126,其補(bǔ)碼為 1000 0010,計(jì)算方法如下: 1 0000 0000 0111 1110 1000 0010可以看出,按照補(bǔ)碼的定義來求補(bǔ)碼,概念十分清晰,方法、步驟也是十分簡(jiǎn)單的。應(yīng)用補(bǔ)碼進(jìn)行計(jì)算用補(bǔ)碼計(jì)算:832558。83都變成補(bǔ)碼,再用加法運(yùn)算> 0101 001125> 1 0000 0000 - 0001 1001> + 111

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論