原碼、反碼、補碼、移碼

來源:互聯網
上載者:User
文章目錄
  • 一、原碼、反碼、補碼的定義
  • 二、補碼加、減運算規則
  • 一、浮點數的運算規則
一、原碼、反碼、補碼的定義

1、原碼的定義

①小數原碼的定義 

 

[X]=

  X   0≤X <1
  1- X  -1 < X ≤ 0

 例如: X=+0.1011 , [X]原= 01011
        X=-0.1011  [X]原= 11011

②整數原碼的定義

 

[X]=

  X   0≤X <2n
  2n-X  - 2n < X ≤ 0

2、補碼的定義

①小數補碼的定義

 

[X]=

  X    0≤X <1
  2+ X    -1 ≤ X < 0

例如:  X=+0.1011,   [X]補= 01011
        X=-0.1011,  [X]補= 10101

②整數補碼的定義 

 

[X]=

  X     0≤X <2n
  2n+1+X    - 2n ≤ X < 0

3、反碼的定義

①小數反碼的定義 

 

[X]=

  X     0≤X <1
  2-2n-1-X    -1 < X ≤ 0

 

例如:   X=+0.1011      [X]反= 01011
         X=-0.1011     [X]反= 10100

②整數反碼的定義

 

[X]=

  X     0≤X <2n
  2n+1-1-X     - 2n < X ≤ 0

4.移碼:移碼只用於表示浮點數的階碼,所以只用於整數。

①移碼的定義:設由1位符號位和n位元值位組成的階碼,則 [X]移=2n + X     -2n≤X ≤ 2n
例如: X=+1011     [X]移=11011     符號位“1”表示正號
              X=-1011     [X]移=00101     符號位“0”表示負號

②移碼與補碼的關係: [X]移與[X]補的關係是符號位互為反碼,
例如: X=+1011     [X]移=11011     [X]補=01011 
              X=-1011     [X]移=00101     [X]補=10101 

③移碼運算應注意的問題:
◎對移碼運算的結果需要加以修正,修正量為2n ,即對結果的符號位取反後才是移碼形式的正確結果。
◎移碼錶示中,0有唯一的編碼——1000…00,當出現000…00時(表示-2n),屬於浮點數下溢。

二、補碼加、減運算規則1、運算規則

[X+Y]補= [X]補+ [Y]補
[X-Y]補= [X]補+ [-Y]補

若已知[Y]補,求[-Y]補的方法是:將[Y]補的各位(包括符號位)逐位取反再在最低位加1即可。
例如:[Y]補= 101101 [-Y]補= 010011 

2、溢出判斷,一般用雙符號位進行判斷:

符號位00 表示正數 11 表示負數
結果的符號位為01時,稱為上溢;為10時,稱為下溢

例題:設x=0.1101,y=-0.0111,符號位為雙符號位
用補碼求x+y,x-y 
[x]補+[y]補=00 1101+11 1001=00 0110 
[x-y]補=[x]補+[-y]補=00 1101+00 0111=01 0100
結果錯誤,正溢出三、原碼一位乘的實現:

設X=0.1101,Y=-0. 1011,求X*Y
解:符號位單獨處理, x符+ y符
數值部分用原碼進行一位乘,如所示:
   

  高位部分積  低位部分積/乘數 說明
       0 0 0 0 0 0    1 0 1 1     起始情況
+) 0 0 1 1 0 1     乘數最低位為1,+X
       
       0 0 1 1 0 1      
       0 0 0 1 1 0   1 1 0 1 1(丟) 右移部分積和乘數
  +) 0 0 1 1 0 1     乘數最低位為1,+X
       
       0 1 0 0 1 1       
       0 0 1 0 0 1   1 1 1 0  1(丟) 右移部分積和乘數
  +) 0 0 0 0 0 0     乘數最低位為0,+0
       
       0 0 1 0 0 1       
       0 0 0 1 0 0   1 1 1 1 0(丟) 右移部分積和乘數
  +) 0 0 1 1 0 1     乘數最低位為1,+X
       
       0 1 0 0 0 1       
       0 0 1 0 0 0  1 1 1 1 1(丟) 右移部分積和乘數
         

四、原碼一位除的實現:一般用不恢複餘數法(加減交替法)

  部分積 低位部分積 附加位 操作說明
       0 0 0 0 0 0     1 0 1 1     起始情況
+) 0 0 0 0 0 0     乘數最低位為1,+X
       
       0 0 0 0 0 0      
       0 0 0 0 0 0   1 1 0 1 1(丟) 右移部分積和乘數
  +) 1 1 0 0 1 1     乘數最低位為1,+X
       
       0 1 0 0 1 1       
       0 0 1 0 0 1   1 1 1 0  1(丟) 右移部分積和乘數
  +) 0 0 0 0 0 0     乘數最低位為0,+0
       
       0 0 1 0 0 1       
       0 0 0 1 0 0   1 1 1 1 0(丟) 右移部分積和乘數
  +) 0 0 1 1 0 1     乘數最低位為1,+X
       
       0 1 0 0 0 1       
       0 0 1 0 0 0  1 1 1 1 1(丟) 右移部分積和乘數

§2.5 浮點運算與浮點運算器

一、浮點數的運算規則1、浮點加減法的運算步驟

設兩個浮點數 X=Mx※2Ex Y=My※2Ey
實現X±Y要用如下5步完成:
①對階操作:小階向大階看齊
②進行尾數加減運算
③規格化處理:尾數進行運算的結果必須變成規格化的浮點數,對於雙符號位的補碼尾數來說,就必須是
001×××…×× 或110×××…××的形式
若不符合上述形式要進行左規或右規處理。

④舍入操作:在執行對階或右規操作時常用“0”舍“1”入法將右移出去的尾數數值進行舍入,以確保精度。
⑤判結果的正確性:即檢查階碼是否溢出
若階碼下溢(移碼錶示是00…0),要置結果為機器0;
若階碼上溢(超過了階碼錶示的最大值)置溢出標誌。

例題:假定X=0 .0110011*211,Y=0.1101101*2-10(此處的數均為二進位) ?? 計算X+Y;
解:[X]浮: 0 1 010 1100110
    [Y]浮: 0 0 110 1101101
            符號位 階碼 尾數

第一步:求階差: │ΔE│=|1010-0110|=0100
第二步:對階:Y的階碼小, Y的尾數右移4位
        [Y]浮變為 0 1 010 0000110 1101暫時儲存 
第三步:尾數相加,採用雙符號位的補碼運算 
    00 1100110 
   +00 0000110 
    00 1101100
第四步規格化:滿足規格化要求 
第五步:舍入處理,採用0舍1入法處理
故最終運算結果的浮點數格式為: 0 1 010 1101101,
即X+Y=+0. 1101101*210 

2、浮點乘除法的運算步驟

①階碼運算:階碼求和(乘法)或階碼求差(除法)
    即  [Ex+Ey]移= [Ex]移+ [Ey]補 
        [Ex-Ey]移= [Ex]移+ [-Ey]補

②浮點數的尾數處理:浮點數中尾數乘除法運算結果要進行舍入處理
例題:X=0 .0110011*211,Y=0.1101101*2-10
求X※Y
解:[X]浮: 0 1 010 1100110
    [Y]浮: 0 0 110 1101101
第一步:階碼相加 
[Ex+Ey]移=[Ex]移+[Ey]補=1 010+1 110=1 000 
1 000為移碼錶示的0
第二步:原碼尾數相乘的結果為:
0 10101101101110
第三步:規格化處理:已滿足規格化要求,不需左規,尾數不變,階碼不變。
第四步:舍入處理:按舍入規則,加1進行修正
所以 X※Y= 0.1010111※2+000

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.