計算機基礎(chǔ)理論原碼 補碼 反碼 移碼_第1頁
計算機基礎(chǔ)理論原碼 補碼 反碼 移碼_第2頁
計算機基礎(chǔ)理論原碼 補碼 反碼 移碼_第3頁
計算機基礎(chǔ)理論原碼 補碼 反碼 移碼_第4頁
計算機基礎(chǔ)理論原碼 補碼 反碼 移碼_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、計算機基礎(chǔ)理論:原碼、反碼、補碼、移碼一、標準理論1、原碼的定義小數(shù)原碼的定義X原 =X0X 11 X1 X 0例如: X=+0.1011 , X原= 01011X=0.1011 X原= 11011整數(shù)原碼的定義X原 =X0X 2n2nX 2n X 02、補碼的定義小數(shù)補碼的定義X補 =X0X 12 X1 X 0例如: X=+0.1011, X補= 01011X=0.1011, X補= 10101整數(shù)補碼的定義 X補 =X0X 2n2n+1X 2n X 03、反碼的定義小數(shù)反碼的定義X反 =X0X 122n-1X1 X 0例如: X=+0.1011 X反= 01011X=0.1011 X反=

2、10100整數(shù)反碼的定義X反 =X0X 2n2n+11X 2n X 04.移碼:移碼只用于表示浮點數(shù)的階碼,所以只用于整數(shù)。移碼的定義:設(shè)由1位符號位和n位數(shù)值位組成的階碼,則 X移=2n + X -2nX 2n例如: X=1011 X移=11011 符號位“1”表示正號X=1011 X移=00101 符號位“0”表示負號移碼與補碼的關(guān)系: X移與X補的關(guān)系是符號位互為反碼,例如: X=1011 X移=11011 X補=01011X=1011 X移=00101 X補=10101 移碼運算應(yīng)注意的問題:對移碼運算的結(jié)果需要加以修正,修正量為2n ,即對結(jié)果的符號位取反后才是移碼形式的正確結(jié)果。移

3、碼表示中,0有唯一的編碼100000,當出現(xiàn)00000時(表示2n),屬于浮點數(shù)下溢。二、補碼加、減運算規(guī)則1、運算規(guī)則XY補= X補 Y補XY補= X補 Y補若已知Y補,求Y補的方法是:將Y補的各位(包括符號位)逐位取反再在最低位加1即可。例如:Y補= 101101 Y補= 0100112、溢出判斷,一般用雙符號位進行判斷:符號位00 表示正數(shù) 11 表示負數(shù)結(jié)果的符號位為01時,稱為上溢;為10時,稱為下溢例題:設(shè)x=0.1101,y=0.0111,符號位為雙符號位用補碼求x+y,xyx補+y補=00 1101+11 1001=00 0110xy補=x補+y補=00 1101+00 011

4、1=01 0100結(jié)果錯誤,正溢出三、原碼一位乘的實現(xiàn):設(shè)X=0.1101,Y=0. 1011,求X*Y解:符號位單獨處理, x符 y符數(shù)值部分用原碼進行一位乘,如下圖所示:高位部分積低位部分積/乘數(shù)說明0 0 0 0 0 0 1 0 1 1起始情況) 0 0 1 1 0 1乘數(shù)最低位為1,+X0 0 1 1 0 10 0 0 1 1 01 1 0 11(丟右移部分積和乘數(shù)) 0 0 1 1 0 1乘數(shù)最低位為1,+X0 1 0 0 1 10 0 1 0 0 11 1 1 01(丟右移部分積和乘數(shù)) 0 0 0 0 0 0乘數(shù)最低位為0,+00 0 1 0 0 10 0 0 1 0 01 1

5、1 10(丟右移部分積和乘數(shù)) 0 0 1 1 0 1乘數(shù)最低位為1,+X0 1 0 0 0 10 0 1 0 0 01 1 1 11(丟右移部分積和乘數(shù)四、原碼一位除的實現(xiàn):一般用不恢復(fù)余數(shù)法(加減交替法)部分積低位部分積 附加位操作說明0 0 0 0 0 0 1 0 1 1起始情況) 0 0 0 0 0 0乘數(shù)最低位為1,+X0 0 0 0 0 00 0 0 0 0 01 1 0 11(丟右移部分積和乘數(shù)) 1 1 0 0 1 1乘數(shù)最低位為1,+X0 1 0 0 1 10 0 1 0 0 11 1 1 01(丟右移部分積和乘數(shù)) 0 0 0 0 0 0乘數(shù)最低位為0,+00 0 1 0

6、0 10 0 0 1 0 01 1 1 10(丟右移部分積和乘數(shù)) 0 0 1 1 0 1乘數(shù)最低位為1,+X0 1 0 0 0 10 0 1 0 0 01 1 1 11(丟右移部分積和乘數(shù)§2.5 浮點運算與浮點運算器一、浮點數(shù)的運算規(guī)則1、浮點加減法的運算步驟設(shè)兩個浮點數(shù) X=Mx2Ex Y=My2Ey實現(xiàn)X±Y要用如下5步完成:對階操作:小階向大階看齊進行尾數(shù)加減運算規(guī)格化處理:尾數(shù)進行運算的結(jié)果必須變成規(guī)格化的浮點數(shù),對于雙符號位的補碼尾數(shù)來說,就必須是001××××× 或110×××&

7、#215;×的形式若不符合上述形式要進行左規(guī)或右規(guī)處理。舍入操作:在執(zhí)行對階或右規(guī)操作時常用“0”舍“1”入法將右移出去的尾數(shù)數(shù)值進行舍入,以確保精度。判結(jié)果的正確性:即檢查階碼是否溢出若階碼下溢(移碼表示是000),要置結(jié)果為機器0;若階碼上溢(超過了階碼表示的最大值)置溢出標志。例題:假定X=0 .0110011*211,Y=0.1101101*2-10(此處的數(shù)均為二進制) ? 計算X+Y;解:X浮: 0 1 010 1100110Y浮: 0 0 110 1101101符號位 階碼 尾數(shù)第一步:求階差: E=|1010-0110|=0100第二步:對階:Y的階碼小, Y的尾數(shù)右

8、移4位Y浮變?yōu)?0 1 010 0000110 1101暫時保存第三步:尾數(shù)相加,采用雙符號位的補碼運算00 1100110+00 000011000 1101100第四步規(guī)格化:滿足規(guī)格化要求第五步:舍入處理,采用0舍1入法處理故最終運算結(jié)果的浮點數(shù)格式為: 0 1 010 1101101,即X+Y=+0. 1101101*2102、浮點乘除法的運算步驟階碼運算:階碼求和(乘法)或階碼求差(除法)即 Ex+Ey移= Ex移+ Ey補ExEy移= Ex移+ Ey補浮點數(shù)的尾數(shù)處理:浮點數(shù)中尾數(shù)乘除法運算結(jié)果要進行舍入處理例題:X=0 .0110011*211,Y=0.1101101*2-10求

9、XY第四步:舍入處理:按舍入規(guī)則,加1進行修正所以 XY= 0.10101112+000chapter two和增碼。二進制數(shù)的表示形式有定點表示兩數(shù)均為正數(shù)相加,則最高位是1為上溢;若一正數(shù)和一負數(shù)相加,則不會發(fā)生溢出. (6作加減運算時較為方便,但作乘除運算時要比原碼復(fù)雜. 例:若 X=-0.1000100, 則X補=10-0.1000100=1.0111100 若 X=0.1000001, 則X補=X=0.1000001 注:負數(shù)補碼的求法:按位求反末位加1 如:求-0.1000100的補碼 (1按位求反:1.0111011 (2末位加1: 1.0111100 1.0111100即為-0

10、.1000100的補碼。 n位整數(shù)X的補碼定義如下: X 當2n-1>X>=0時 X補= 2n+X=2n-X 當0>X>=-2n-1時 3.反碼 n位二進制定點小數(shù)X=x0x1x2.xn-1的反碼X反定義為: X 當1>X>=0時 X反= 2-2-n+1+X 當-1 時 其特點有 : (10 的反碼有兩種 , 即 0.0000.0 和 1.1111.1 。 n 個 n 個 (2 數(shù)的表示范圍 -(1-2-n+1,(1-2-n+1 (3 最高位為符號位 . 若負數(shù)時符號位為 1; 正數(shù)則符號位為 0. (4 反碼和補碼的關(guān)系 :X 補 =X 反 +2-n+1.

11、 (5 反碼加法 :X+Y 反 =X 反 +Y 反 +( 為 X 反 +Y 反的最高位進位 . (6 反碼加法的溢出判別和補碼相同 . 例 : 若 X=-0.1011 則 X 反 =10-0.0001-0.1011=1.0100 若 X 補 =1.0110, 求 X 反 . 因為 X 補 =X 反 +0.0001 所以 X 反 =X 補 -0.0001=1.0101 或者 :X=-10+1.0110=-0.1010 則 X 反 =(10-0.0001-0.1010=1.0101 n 位整數(shù) X 的反碼定義如下 : X 當 2n-1>X>=0 時 X 反 = (2n-1+X 當 0&

12、gt;=X>-2n-1 時 總之 , 一個正數(shù) X 的原碼、補碼、反碼均為其本身。一個二進制負數(shù)的原碼、補 碼、反碼可用公式求得;一個負數(shù)的原碼只要將符號位變?yōu)椋渌疾蛔儯?個負數(shù)的反碼只要將原碼除符號位外其它位按位求反即可,一個負數(shù)的補碼可用 列方法求得:寫出的原碼,將其按位求反,再在末尾加上即可。 二、 民間通俗說法對于在內(nèi)存中存有的數(shù)據(jù)都是以二進制形式存在可是為了更好地區(qū)分正數(shù)和負數(shù)便采用了不同的編碼存儲: 對于正數(shù),在內(nèi)存中存在的是其原碼: 如: int i=1; 則變量i在內(nèi)存中的存大形式為: 00 00 00 00 00 00 00 01 一個C語言中的整型變量占有兩個

13、字節(jié)即16位二進制數(shù)位.最高位為符號位 "0"表示其為正. 原碼是將變量直接轉(zhuǎn)為二進制存儲. 對于負數(shù)如: int i=-1; 首先在符號位上表征其為負即最高位為1: 10 00 00 00 00 00 00 01 符號位后便是1的原碼: 0 00 00 00 00 00 00 01 實際上負數(shù)據(jù)并非這樣存儲,而是先將符號位之后的15位每位求反:0變1,1變0. 則所得碼為(符號位不變,其它位求反,反碼即每原碼每位求反: 11 11 11 11 11 11 11 10 補碼為原碼再加 1 ,則為: 11 11 11 11 11 11 11 11 負數(shù)在內(nèi)存中以補碼形式存儲在

14、內(nèi)存中草存在的形式為其補碼形式即: 11 11 11 11 11 11 11 11 取數(shù)時系統(tǒng)先看符號位如果是"0"則直接輸出,如果為"1" 則認為所存為負數(shù): 即將所存數(shù)減1先求出其反碼,若仍以"-1"為例則補碼減1后為: 11 11 11 11 11 11 11 10 然后符號位外每位求反得其原碼: 10 00 00 00 00 00 00 01 然后輸出: -1. 內(nèi)存中存的數(shù)都是以補碼形式存在的,原碼是正數(shù)的時候,補碼就是原碼,是負數(shù)的時候,補碼就是原碼取反加1,反碼就是原碼取反 主要原因是原碼和反碼在表示數(shù)的時候的不唯一性,比如表示

溫馨提示

  • 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

提交評論