摘 要: 計(jì)算機(jī)采用補(bǔ)碼運(yùn)算。本文研究了計(jì)算機(jī)運(yùn)算電路的工作原理,有符號數(shù)補(bǔ)碼和無符號數(shù)的運(yùn)算規(guī)則,舉例對其運(yùn)算過程進(jìn)行了深入研究,分析了其運(yùn)算過程中對進(jìn)/借位標(biāo)志的影響。研究表明,計(jì)算機(jī)采用補(bǔ)碼運(yùn)算不用區(qū)分?jǐn)?shù)的屬性,運(yùn)算過程完全一樣,但是進(jìn)/借位標(biāo)志位受指令影響。
關(guān)鍵詞: 計(jì)算機(jī) 運(yùn)算電路 補(bǔ)碼運(yùn)算 運(yùn)算規(guī)則 微機(jī)原理
1.引言
隨著科學(xué)技術(shù)的發(fā)展,計(jì)算機(jī)已深入到生產(chǎn)生活的各個(gè)領(lǐng)域,微機(jī)原理課程作為普通高校電子類、通信類、機(jī)械類等工科非計(jì)算機(jī)專業(yè)的專業(yè)基礎(chǔ)課必修課,在各個(gè)高校都得到了重視。微機(jī)原理課程內(nèi)容抽象、知識點(diǎn)繁瑣,課程難度較大,學(xué)生學(xué)習(xí)興趣難以培養(yǎng),課程的不及格率都比較高。計(jì)算機(jī)中數(shù)的運(yùn)算分為有符號數(shù)運(yùn)算和無符號數(shù)運(yùn)算,一直以來眾多教材和計(jì)算機(jī)書籍都認(rèn)為計(jì)算機(jī)中的運(yùn)算都是有符號數(shù)的補(bǔ)碼運(yùn)算,課程組經(jīng)過多年研究,對這一觀點(diǎn)進(jìn)行了升華,認(rèn)為計(jì)算機(jī)不僅可以進(jìn)行有符號數(shù)運(yùn)算,而且可以進(jìn)行無符號數(shù)運(yùn)算,并且認(rèn)為計(jì)算機(jī)并不區(qū)分?jǐn)?shù)的屬性,運(yùn)算過程是完全一樣的。
2.計(jì)算機(jī)中的運(yùn)算電路
計(jì)算機(jī)中的運(yùn)算都是在運(yùn)算器中運(yùn)行的,運(yùn)算器是由加法器構(gòu)成的,只會(huì)做二進(jìn)制加法運(yùn)算,二進(jìn)制一位全加器電路如圖1所示。組成8位二進(jìn)制數(shù)加法運(yùn)算器電路如圖2所示。
圖2中aaaaaaaa作為全加器的一個(gè)輸入,稱為被加數(shù)/被減數(shù);bbbbbbbb作為全加器的另一個(gè)輸入,稱為加數(shù)/減數(shù);SSSSSSSS作為全加器的輸出,稱為和或差;CCCCCCCC為全加器加法運(yùn)算中低位向高位的進(jìn)位;SUB為加減控制信號;Cy為進(jìn)/借位標(biāo)志位;OV為溢出標(biāo)志位。當(dāng)做加法運(yùn)算時(shí),加減控制信號SUB=0,圖2中各異或邏輯門均為同相邏輯門,對加數(shù)沒有任何影響,則和S=a+b+c。當(dāng)做減法運(yùn)算時(shí),加減控制信號SUB=1,圖2中各異或邏輯門均為反相邏輯門,對減數(shù)沒有任何影響,則和S=a-b+c=a-/b+c。通過分析可知,計(jì)算機(jī)中運(yùn)算電路不僅可以做加法運(yùn)算,而且可以做減法運(yùn)算,只不過做減法運(yùn)算時(shí),減去一個(gè)數(shù)等于加上這個(gè)數(shù)的反碼并在末位加1,這個(gè)運(yùn)算過程稱之為補(bǔ)碼運(yùn)算。另外Cy=C⊕SUB表示運(yùn)算過程中的進(jìn)/借位,加法時(shí)表示進(jìn)位,減法時(shí)表示借位。OV=C⊕C表示運(yùn)算過程中溢出位。
3.計(jì)算機(jī)中數(shù)的運(yùn)算規(guī)則
計(jì)算機(jī)只識別二進(jìn)制數(shù),二進(jìn)制數(shù)最高位當(dāng)作符號位其它位作為數(shù)值位,稱之為有符號數(shù);最高位不做符號位而和其它數(shù)值位一樣有自己的位權(quán),稱之為無符號數(shù)。計(jì)算機(jī)不區(qū)分?jǐn)?shù)是否有符號的運(yùn)算都是補(bǔ)碼運(yùn)算過程一樣且滿足公式(1)。
X+Y=[X+Y](1)
下面以35-42來介紹計(jì)算機(jī)中數(shù)的運(yùn)算過程。
(1)35-42當(dāng)成無符號數(shù)運(yùn)算,其運(yùn)算過程是35減去42,其減法運(yùn)算過程如下:
[35]=00100011B
-)[42]=00101010B
[35]=00100011B
+)[-42]=11010110B
運(yùn)算結(jié)果為11111001,由于減法運(yùn)算SUB=1,C=0,則借位標(biāo)志位Cy=C⊕SUB=1。這種情況下求真值時(shí)須把運(yùn)算結(jié)果按位取反末位加1,即00000111,再加上Cy=1,則真值應(yīng)為-7。
(2)35-42當(dāng)成有符號數(shù)運(yùn)算,其運(yùn)算過程是35的補(bǔ)碼加上-42的補(bǔ)碼,其運(yùn)算過程如下:
[35]=00100011B
+)[-42]=11010110B
11111001B
運(yùn)算結(jié)果為11111001,即[-7],有符號運(yùn)算求真值時(shí)符號位保持不變,其它位按位取反末位加1,即10000111,結(jié)果為-7。
當(dāng)計(jì)算機(jī)以無符號數(shù)的規(guī)則運(yùn)算時(shí),須執(zhí)行減法運(yùn)算。例如51單片機(jī)執(zhí)行35-42的無符號數(shù)運(yùn)算的指令為MOVA,35和SUBBA,42執(zhí)行該指令后,即可在寄存器A中看到運(yùn)算結(jié)果F9H,在標(biāo)志寄存器可以看到Cy=1,說明運(yùn)算過程中出現(xiàn)了借位,結(jié)果為負(fù)值,經(jīng)分析F9即為-7的補(bǔ)碼;當(dāng)計(jì)算機(jī)以有符號數(shù)的規(guī)則運(yùn)算時(shí),須執(zhí)行加法運(yùn)算,51單片機(jī)執(zhí)行35-42的有符號數(shù)運(yùn)算的指令為MOVA,35和ADDA,0D6H指令后,即可在寄存器中A中看到運(yùn)算結(jié)果F9H,在標(biāo)志寄存器中Cy=0,說明在加法運(yùn)算中沒有進(jìn)位。分析以上運(yùn)算過程可以發(fā)現(xiàn),35-42的兩種運(yùn)算實(shí)質(zhì)上是一致的,最終都是執(zhí)行[35]補(bǔ)加上[-42]補(bǔ)碼,都可以得到結(jié)果F9H,只不過在執(zhí)行無符號數(shù)減法運(yùn)算時(shí)Cy=1,對于無符號數(shù)F9H按位取反加1,再加上Cy=1可得出真值為-7;執(zhí)行有符號數(shù)加法運(yùn)算時(shí)Cy=0,對有符號數(shù)F9H求補(bǔ)碼,也可得出真值為-7。
4.結(jié)語
本文詳細(xì)分析了有符號數(shù)補(bǔ)碼和無符號數(shù)的運(yùn)算規(guī)則,通過實(shí)例35-42對計(jì)算機(jī)的兩種運(yùn)算過程進(jìn)行了深入研究和分析,分析了其運(yùn)算過程中對進(jìn)/借位標(biāo)志的影響。研究表明,計(jì)算機(jī)實(shí)質(zhì)上采用補(bǔ)碼運(yùn)算,不用區(qū)分?jǐn)?shù)的屬性,運(yùn)算過程完全一樣,但是進(jìn)/借位標(biāo)志位受加減指令影響。
參考文獻(xiàn):
[1]林志貴.微型計(jì)算機(jī)原理及接口技術(shù)[M].北京:機(jī)械工業(yè)出版社,2010.
[2]耿仁義.新編微機(jī)原理及接口技術(shù)[M].天津:天津大學(xué)出版社,2006.