資源描述:
《補(bǔ)碼運(yùn)算法則》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、補(bǔ)碼運(yùn)算的法則補(bǔ)碼運(yùn)算的法則要在“微機(jī)原理”這門課中講到,在“數(shù)字電子技術(shù)”課中不作重點(diǎn),只需一般了解即可。在數(shù)字電子技術(shù)教科書中,補(bǔ)碼部分是用4位或5位2進(jìn)制數(shù)來講的,所以本文中也多以4、5位二進(jìn)制數(shù)做例子。利用補(bǔ)碼運(yùn)算必須確定運(yùn)算數(shù)的位數(shù),這樣才能確定補(bǔ)碼的模數(shù)。在計(jì)算機(jī)中,帶符號(hào)的數(shù)的表示方法有3種:原碼、補(bǔ)碼和移碼。本文不討論移碼。一、計(jì)算機(jī)中數(shù)的表示法1.原碼對一個(gè)二進(jìn)制數(shù)而言,若用最高位表示數(shù)的符號(hào)(常以“0”表示正數(shù),“1”表示負(fù)數(shù)),其余各位表示數(shù)的本身,則稱為二進(jìn)制數(shù)的原碼表示法。例如:設(shè)A=+100
2、1,B=-0101,則[A]原=01001,[B]原=10101。[A]原、[B]原分別是A、B的原碼,是符號(hào)數(shù)值化了的數(shù)。符號(hào)數(shù)值化之前的帶符號(hào)的數(shù)A、B稱為是“真值”。2.補(bǔ)碼(1)補(bǔ)碼的定義:根據(jù)同余的概念X+NK=X(modK)………………①括號(hào)中的部分不參加運(yùn)算,它表示“K是?!?。N是任意整數(shù)。該式的含義是,數(shù)X與該數(shù)加上其模的任意整倍數(shù)之和相等。例如鐘表的表盤,模為12,不論指針轉(zhuǎn)了幾圈,3點(diǎn)總是3點(diǎn)。用定義式表示,即3+N×12=3在①式中,當(dāng)N=1時(shí)有[X]補(bǔ)數(shù)=X+K,[X]補(bǔ)數(shù)稱為是X的補(bǔ)數(shù)。當(dāng)0≤
3、X<K時(shí),[X]補(bǔ)數(shù)=X(正數(shù)的補(bǔ)碼是其本身)當(dāng)-K≤X<0時(shí),[X]補(bǔ)數(shù)=X+K(負(fù)數(shù)的補(bǔ)碼=X+K=模-
4、X
5、)例如表盤模=12當(dāng)X=3時(shí),[3]補(bǔ)數(shù)=3,其涵義是表針正著轉(zhuǎn)了3格;當(dāng)X=-3時(shí),[-3]補(bǔ)數(shù)=-3+12=9,其含義就是指針倒著轉(zhuǎn)了3格,就等于正著轉(zhuǎn)了9格。(因?yàn)閄<0∴X+K=模-
6、X
7、)模=“在限定的位數(shù)中可表示的最大數(shù)”加1。在計(jì)算機(jī)中,一個(gè)機(jī)器數(shù)的字長為n位,它能夠表示的最大數(shù)為n個(gè)“1”,其模為2n。例如4位的機(jī)器數(shù)中,n=4,可表示的最大數(shù)為1111B(1111B表示是一個(gè)二進(jìn)制數(shù)),其
8、模就是1111B+1=10000=24。4位二進(jìn)制數(shù)的模是10000,即16;而8位二進(jìn)制數(shù)的模是100000000,即256。再例如十進(jìn)制的模是10,十二進(jìn)制的模是12。4一個(gè)二進(jìn)制數(shù),若以2n為模(n為二進(jìn)制數(shù)的位數(shù),通常與計(jì)算機(jī)中計(jì)其數(shù)的長度一致),它的補(bǔ)碼叫做2補(bǔ)碼,簡稱補(bǔ)碼。即當(dāng)0≤X<2n-2時(shí),[X]補(bǔ)=X當(dāng)–2n-1≤X<0時(shí),[X]補(bǔ)=2n+X=2n-
9、X
10、………②同理,十進(jìn)制的補(bǔ)碼是10,十二進(jìn)制的補(bǔ)碼是12。再利用鐘表的例子:當(dāng)X=3時(shí),[3]補(bǔ)=3;當(dāng)X=-3時(shí),[-3]補(bǔ)=-3+12=9。所以
11、,正數(shù)的補(bǔ)碼是它本身,負(fù)數(shù)的補(bǔ)碼是負(fù)數(shù)加上模。在二進(jìn)制中,4位二進(jìn)制數(shù)的時(shí)候,n=4,根據(jù)②式,-1的補(bǔ)碼就是:[-1]補(bǔ)=24+(-1)=10000B–1=1111B5位二進(jìn)制數(shù)的時(shí)候,n=5,根據(jù)②式,-1的補(bǔ)碼就是:[-1]補(bǔ)=25+(-1)=100000B–1=11111B(2)補(bǔ)碼的求法①根據(jù)定義求:即上述的辦法,顯然很不方便。②保持符號(hào)位不變,數(shù)值位求反加1:例如4位二進(jìn)制數(shù)-001,其原碼為[1001]原,則其補(bǔ)碼為[1001]補(bǔ)=1110+1=1111。式中的1110即為1001的反碼,注意符號(hào)位——最
12、高位的1不參加求反。③直接求補(bǔ):從最低位起,從右至左,到出現(xiàn)第一個(gè)1之前(包括第一個(gè)1)原碼中的數(shù)字不變,以后逐位求反,但符號(hào)位不變,即可直接得到補(bǔ)碼。例1:求補(bǔ):n=4X=-1[-1]補(bǔ)=[1001]原=1111最后一位的1不變求反例2:n=8X=-11100000[X]原=111100000[X]補(bǔ)=100100000二、補(bǔ)碼的運(yùn)算法則:41.無論正數(shù)還是負(fù)數(shù),都是先求補(bǔ),再相加,其和為補(bǔ)碼。如果相加之和是正數(shù),則即為所求之和的原碼,但是如果結(jié)果是負(fù)數(shù),還應(yīng)再求其補(bǔ)碼,方能得到和的原碼。運(yùn)算法則:[X]補(bǔ)±[Y]補(bǔ)
13、=[X±Y]補(bǔ)[[X]補(bǔ)]補(bǔ)=[X]原例1:96-19算法:X–Y=[[X]補(bǔ)+[Y]補(bǔ)]補(bǔ)[X]補(bǔ)=[X]原=01100000B[Y]補(bǔ)=[Y]原=00010011B[-Y]補(bǔ)=11101101B符號(hào)位參加運(yùn)算。X–Y=[[X]補(bǔ)+[Y]補(bǔ)]補(bǔ)=[01100000B+11101101B]補(bǔ)=[01001101B]補(bǔ)=01001101B[X-Y]補(bǔ)=[X-Y]原=01001101B=+77例2:(-56)-(-17)=(-56)+17[X]原=10111000B[X]補(bǔ)=11001000B[Y]原=10010001B[
14、Y]補(bǔ)=11101111B[-Y]補(bǔ)=00010001B(-56)-(-17)=[[-56]補(bǔ)+[17]補(bǔ)]補(bǔ)=[11001000+00010001]補(bǔ)=[11011001B]補(bǔ)[X-Y]原=[[X-Y]補(bǔ)]補(bǔ)=[11011001]補(bǔ)=10100111B=-392.有關(guān)0的問題原碼中,+0=-0=0補(bǔ)碼中0000=01000B=-