限位數(shù)理論與運算器設(shè)計_第1頁
限位數(shù)理論與運算器設(shè)計_第2頁
限位數(shù)理論與運算器設(shè)計_第3頁
限位數(shù)理論與運算器設(shè)計_第4頁
限位數(shù)理論與運算器設(shè)計_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、限位數(shù)理論與運算器設(shè)計摘 要:用數(shù)碼按照“逢N 進一”規(guī)則書寫的限位數(shù),最高進位會丟失,這種看似缺點的現(xiàn)象,恰為機器實現(xiàn)算術(shù)運算帶來了方便。數(shù)碼書寫的限位數(shù)不但有序,而且總數(shù)一定,其中和為總數(shù)的兩數(shù)中,較大的數(shù)如果代表較小數(shù)的相反數(shù),不但能解決用限位數(shù)表示正負數(shù),而且也能解決用機器實現(xiàn)算術(shù)運算的問題。限位數(shù)是計算機產(chǎn)生和發(fā)展的重要理論之一,運用它來進行計算機設(shè)計,簡單易行。關(guān)鍵詞:限位數(shù);補碼;反碼;運算器;計算機設(shè)計中圖分類號:TP301,TP302,TP3031 引言無論國內(nèi)還是國外的計算機教材,涉及到運算器設(shè)計,都是用二進制運算與邏輯電路的轉(zhuǎn)換,直接搭建了加減法運算器1,沒有能夠恰當?shù)亟?/p>

2、釋機器數(shù)值運算的道理。多數(shù)教材提到了數(shù)制理論,然而,又與計算機運算器的實際設(shè)計思想相差甚遠,基本上都從實數(shù)理論對運算器的電路設(shè)計“進行解釋,但不能應(yīng)用于器件設(shè)計2”。究竟計算機運算器的設(shè)計是根據(jù)什么理論來完成的?本文作者在2004 年提出了限位數(shù)的概念和方法3,將二進制數(shù)的機器表示問題,提升到任意進制數(shù),從而可以很好解釋計算機設(shè)計中一些作法的合理性,也可以說明類似“+0 和-0”4概念的錯誤之處。將限位數(shù)理論和方法,用到了計算機軟硬件設(shè)計中5,不僅思路清晰,而且能夠收到簡單易行的效果。2 限位數(shù)數(shù),一般都由數(shù)碼記錄。手寫數(shù)不考慮數(shù)碼有多少,而計算機卻有位數(shù)的限定。2.1 限位數(shù)的概念用數(shù)碼表示

3、,位數(shù)一定的無符號整數(shù),叫限位數(shù)。限位數(shù)為了表示位數(shù)多少,無效0 不能省略。例如,001,00001 是不同的限位數(shù)。限位數(shù)按無符號整數(shù)進行運算,叫面值運算。2.2 限位數(shù)特性(1)限位數(shù)的數(shù)量一定。例如,3 位十進制數(shù)只有1000 個,而8 位二進制數(shù)只有256個。一般來說,n 位N 進制數(shù)共有Nn 個??倲?shù)Nn 叫限數(shù)。(2)最大的限位數(shù)是由最大的數(shù)碼組成的,它比限數(shù)少1。例如,4 位十進制的9999是最大數(shù),而限數(shù)是10000。顯然限數(shù)是不能用限位數(shù)表示的最小正整數(shù)。(3)限位數(shù)有一一對稱性。限位數(shù)的對稱規(guī)則是“兩數(shù)面值之和為限數(shù)”。例如四位十進制限位數(shù),001 和999、002和998

4、、499 和501,500 和500 是自身對稱。顯然000 沒有對稱的數(shù)。限位數(shù)的對稱數(shù)也叫補碼。(4)限位數(shù)進行面值算術(shù)運算,加法、乘法,超過位數(shù)限制的進位會丟失,不夠減的-2-運算也不能進行。因而面值運算的變化一般不能用“=”連接。我們規(guī)定,面值運算變化用“”連接。例如,522321562,因為最高位向上進的167 丟失了。(5)假定限位數(shù)某一處有小數(shù)點,小數(shù)點移動,不影響限位數(shù)的特性(1)(4)。3 用限位數(shù)計算限位數(shù)雖然運算范圍有限,但卻是計算機運算所必須依賴的形式。如果不發(fā)生減法運算,限位數(shù)面值運算的結(jié)果,發(fā)生了最高位進位,就說明結(jié)果超出范圍了。如果用限位數(shù)表示正負數(shù),那么面值運算

5、最高位發(fā)生進位,值可以是正確的。3.1 表示正負數(shù)不用添加正負號,用限位數(shù)就可以表示正負數(shù)。這是利用限位數(shù)的對稱性和正負數(shù)對稱性一致實現(xiàn)的。由于限位數(shù)中,面值較小限位數(shù)的補碼在面值較大的部分,而限位數(shù)的相反數(shù)與限位數(shù)的補碼一一對應(yīng)。因而可以規(guī)定:比對稱點大的數(shù)表示的是其補碼的相反數(shù),否則表示原數(shù)。例如,3 位十進制限位數(shù)502 表示的值是498 的相反數(shù)-498。由于偶進制的對稱點正好是一個限位數(shù),并且補碼是自身,為避免二義性,就規(guī)定其為負數(shù)。如此偶進制限位數(shù)表達的正負數(shù)范圍負數(shù)比正數(shù)多一個最小數(shù)。限位數(shù)代表的十進制有符號數(shù),叫這個限位數(shù)的值。限位數(shù)值相等,用“=”號連接。3.2 限位數(shù)加法可

6、以代替值的加減運算各進制整數(shù)如果可以用限位數(shù)表示,那么它們的加減運算,就可以用限位數(shù)的加法來完成。例如,22-12=22+(-12),由于2 位限位數(shù)22 可以表示值22,而88 可以表示值-12,所以用22+8810 限位數(shù)的加法,就得到了10 這個限位數(shù),它表示的值是10,可見結(jié)果正確。3.3 溢出用限位數(shù)面值加法,不一定能夠完全代替十進制數(shù)的加減法運算。例如,十進制的40+20,用限位數(shù)面值加法運算表示,得到的值是-40。因為面值運算的結(jié)果雖然是60,但因為2 位十進制限位數(shù)表示正負數(shù)范圍是-5049,根據(jù)值的規(guī)定,限位數(shù)60 的值是-40,可見是錯誤的。限位數(shù)面值運算得到錯誤結(jié)果,這種

7、情況叫溢出,之所以叫溢出,是因為實際的運算結(jié)果,不在限位數(shù)表值的范圍之內(nèi)。3.4 消除溢出限位數(shù)面值加法運算的錯誤是由于結(jié)果值超出范圍造成的,因而用擴充位數(shù)的方法,一定能在更大的范圍內(nèi)得到正確的表示。要不要擴大限位數(shù)的位數(shù),關(guān)鍵在于能夠知道是否溢出。如何判斷和消除溢出?可以證明:限位數(shù)加減運算結(jié)果的值符號與第一個數(shù)值符號不同,一定溢出,否則不溢出6。-3-例如,-41-10 用限位數(shù)表示為59+9049。由于49 表示的是正數(shù),而59 表示的是負數(shù),限位數(shù)49 與59 的符號不同,則一定溢出。實際上,-41-10 = -59,結(jié)果超出了2 位十進制數(shù)的表數(shù)范圍。擴大限位數(shù)的位數(shù)就可以消除溢出。

8、保值擴充限位數(shù)的位數(shù),方法是:表示正數(shù)的限位數(shù)前面加數(shù)碼“0”,表示負數(shù)的限位數(shù)前面加最大數(shù)碼。例如,-41-10,用限位數(shù)表示為59+90,保值擴大成3 位是959990949 = -51,它的值為-51,可見不再溢出了??偠灾?,用限位數(shù)加法運算可以在需要的范圍內(nèi),替代十進制數(shù)的加減法運算。4 機器求補碼計算機用限位數(shù)加法,解決了數(shù)值的減法運算,其關(guān)鍵是將減法運算變成了減數(shù)的補碼表示。那么如何求一個數(shù)的補碼,就成了必須解決的問題。雖然根據(jù)定義,可以用總數(shù)與限位數(shù)作減法得到一個限位數(shù)的補碼,但這又回到了減法運算,故需另外尋求方法。4.1 反碼與反碼數(shù)用機器求補碼要用到反碼的概念。兩個數(shù)碼之和

9、為最大數(shù)碼,其中一個叫另一個的反碼。一個數(shù)的全部數(shù)碼換成其反碼所成的數(shù),叫原數(shù)的反碼數(shù),有時也稱反碼。4.2 用反碼求補碼顯然,兩個反碼數(shù)的和是最大數(shù)碼組成的面值最大的限位數(shù)。而最大數(shù)碼組成的限位數(shù)比總數(shù)小1。不妨設(shè)a,b 分別是限位數(shù)c 的反碼和補碼,那么有b+c = c+a+1;則b = a+1。這就是說,一個限位數(shù)的補碼等于其反碼加一。例如,45108 的反碼是54891,而它的補碼是54891+1=54892。4.3 機器求反碼的電路由于機器直接使用的是二進制數(shù),二進制的反碼,用一個邏輯非門就可以求出。如果想控制一位數(shù)是否求反,用一個異或門就可以控制,稱之為反向控制器。反向控制器的真值

10、表如表1 所示。表1 反相控制器真值表a(輸入) k(控制) a與k 的異或 注釋0 0 01 0 1原碼0 1 11 1 0反碼由表1 可見,控制端k=0,輸出端得到的是輸入端的原碼;而當k=1 時,輸出端得到的是輸入端的反碼。5 用限位數(shù)設(shè)計運算器的例子二進制全加器的進位d 和本位和的邏輯表達式是:d = ab+bc+ac-4-s = abc+abc+abc+abc用二進制全加器可以解決兩個一位二進制數(shù)的帶下端進位的加法。如果用補碼,就可以完成這兩個數(shù)的減法運算。其中補碼使用“反碼加一”得到。圖1 是典型應(yīng)用限位數(shù)設(shè)計運算器的例子,其中在b 端接入一個反向控制器,并將下進位與控制線連在一起

11、,就得到了一個一位的加減法運算器。當k=1 時,b 端通過反向控制器進入全加器的是b 的反碼b,又由于c 與k 同值,故通過全加器實現(xiàn)了a+b+1,即a 與b的補碼相加。圖1 一位加減法運算器電路圖1 (a)是二進制電路,圖1(b)是十進制電路。其實任何進制的一位加減法運算器的電路都如圖1(b)所示,只是全加器和反相器的設(shè)計要比二進制復(fù)雜一些罷了。圖2 是四位十進制加減法運算器的構(gòu)造,為了監(jiān)控限位數(shù)所表示值的符號,在第一個數(shù)的最高位和輸出的最高位,引出了負數(shù)判斷的符號標志,并通過異或門得到溢出標志,通過溢出標志線來及時處理溢出。圖2 四位十進制加減法運算器十進制加減法器輸入輸出都是4 位二進制

12、數(shù)表示的十進制數(shù),進位線、控制線和標志線都是一位的二進制變量。設(shè)計中要注意,不論多少進制的加法運算,單位1 都是相同的,進位不會超過1。十進制數(shù)的符號邏輯是“最高位小于5 是正數(shù)或零,否則是負數(shù)”。而十進制反相器是依據(jù)(0,9)、(1,8)、(2,7)、(3,6)、(4,5)的互反關(guān)系設(shè)計的。十進制全加器的進位“1”是在a 端、b 端和下進位端相加,結(jié)果為10 至19 的情況下得出的。十進制加減法運算器的各器件,也是通過邏輯電路搭建起來的,雖然與二進制相比,復(fù)雜度較高,但作為運算器的部件,體現(xiàn)限位數(shù)的方法是完全一致的。6 計算機的精確計算計算機運算器的位數(shù)是固定的,因而它能夠進行的算術(shù)運算,一

13、般都是限位數(shù)面值運算。-5-由于限位數(shù)表達數(shù)值的范圍有限,似乎一定位數(shù)的計算機不可能進行精確計算。其實,用限位數(shù)運算的方法,可以借助存儲器實現(xiàn)任何精確的計算。6.1 超長數(shù)的加減運算借助于存儲器的運算問題,多半都是軟件的設(shè)計問題。對于加減法運算的超長數(shù),我們可以用運算器的位長來分段存儲,然后用加減法運算器分段計算。限位數(shù)運算將數(shù)值的減法運算變成了加法。因而,超長數(shù)值計算的問題,都變成了加法運算的問題。限位數(shù)的分段加法,主要是要考慮“帶進位加法”和“不帶進位加法”。為此,要在圖2 的“c”端連入進位控制電路,還要將每次運算的進位,用一個一位寄存器保存起來,以便供帶進位的加法使用。圖3 是帶進位控

14、制的十進制加減法運算器,可以設(shè)計相應(yīng)指令,完成超長數(shù)加減法運算。圖中,k 是取反控制端,yi 是“1”控制端,jw 是帶進位運算控制端,L 是寄存器REG 的前次運算輸入控制端。各控制端變化的真值表如表2 所示。表2 帶進位運算控制真值表說明 運算類型 k(取反控制) yi jw(進位)不帶進位加法 0 0 0超長數(shù)加法帶進位加法 0 0 1不帶進位減法 1 1 0超長數(shù)減法帶進位減法 1 0 1圖3 帶進位控制的加減法運算器超長數(shù)碼記錄的數(shù),可以按著限位數(shù)分段存儲,最高段位數(shù)不夠,可以按值是正負數(shù)擴充的方法,得到更長的限位數(shù)。超長數(shù)分段運算,最右面一段不帶進位,接下來的各段都需要帶進位進行計

15、算。6.2 小數(shù)的處理用數(shù)碼表示的帶小數(shù),在一個具體的問題中總能找到最長的小數(shù)位數(shù),例如n 位小數(shù)。這時可以將所有數(shù)的小數(shù)點右移n 位,將參與運算的數(shù)都變成整數(shù)。這種小數(shù)點右移的結(jié)果,使每個數(shù)都擴大了進制基數(shù)的n 次方倍。使用超長數(shù)的運算方法進行整數(shù)計算,最終將結(jié)果的小數(shù)點再左移n 位,就是帶小數(shù)運算的結(jié)果。例如,3452 - 4.876,右移小數(shù)點3 位,得3452000 - 4876,用4 位限位數(shù)表示,得0345_2000+ 9999_5124,可分成兩次,用4 位限位數(shù)加法運算器計算。不帶進位加法是:-6-20005124 7124運算產(chǎn)生的進位是0(帶著進位,不用考慮溢出);帶進位的

16、加法運算是:0345+9999+0 0344最終結(jié)果是 3447.124。通過驗證,可以說明結(jié)果的正確性。注意,分段做限位數(shù)加法運算,最高段運算結(jié)束,要判斷是否溢出,如果溢出,可再增加一段限位數(shù)處理。有了圖3 的基本硬件結(jié)構(gòu),就可以設(shè)計相應(yīng)的指令,然后通過程序設(shè)計,最終完成復(fù)雜的超長限位數(shù)的運算。7 結(jié)論限位數(shù)的概念和方法,不僅為計算機的運算器設(shè)計提供了切實可行的理論支持,而且也充分地體現(xiàn)了,數(shù)學(xué)認識的有限向無限轉(zhuǎn)化的過程。限位數(shù)理論是計算機賴以產(chǎn)生的基礎(chǔ)理論之一。參考文獻1 David Money Harris,Sarah L.Harris數(shù)字設(shè)計和計算機系統(tǒng)結(jié)構(gòu)(英文版)北京,機械工業(yè)出版

17、社,2007.10,p233-2402 金蘭計算機組織與結(jié)構(gòu)北京,高等教育出版社,1986.5,p80-1413 姜詠江補碼制理論的理解北京,計算機工程與應(yīng)用, 2004.54 張功萱,顧一禾,鄒建偉(等)計算機組成原理北京,清華大學(xué)出版社,2005.9,p255 姜詠江計算機原理綜合課程設(shè)計北京,清華大學(xué)出版社,2009.6,p75-1146 姜詠江計算機設(shè)計的基礎(chǔ)理論限位數(shù)2009 中國計算機大會論文集,2009.10,p362The Theory of Fixed-Length Number and DesignArithmetical unitJiang YongjiangSchool

18、 of Information Technology & Management Engneering, University of InternationalBusiness and Economics, Beijing (100013)AbstractDefers to with the numerical code “meets N to enter one” the rule writing fixed-length number highestcarrying to be able to lose, this kind looked that resembles the shortcoming the phenomenon, realizedthe arithmetic operation for the machine to bring convenie

溫馨提示

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

評論

0/150

提交評論