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