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