原碼、反碼、補碼、移碼相互轉換及其運算


原碼、反碼、補碼和移碼的相互轉換

 

 

  

一、機器數

  連同符號位一起數字化的數。

  1.特點
    ①符號數字化
    ②數值的大小受機器字長的限制。每個機器數所占的二進制位數受限於機器硬件規模,與機器字長有關。超過機器字長的數位要被舍去。

  2.真值:機器數中除“+”“-”符號外,其余部分表示的值。

  3.分類

    ①無符號數:機器字長的所有二進制位均表示數值。

    ②帶符號數:數值部分和符號均為二進制代碼表示,通常符號位位於最高位。符號位“1”表示“-”,“0”表示“+”。

    

 

 二、原碼

  原碼是保持原有的數值部分的形式不變。

     整數部分:  

      0X2n[X]=X                             [10011001] = 010011001

      當-2nX0[X]=2n-X=2n+|X|       [-10011001]= 110011001

    小數部分:

      當0 ≤ X<1,[X]=X                           [0.10011001]原 = 0.10011001

      當-1<X ≤ 0,[X]=1+|X|                   [-0.10011001]= 1.110011001

   ①將[X]的符號取反即可得到[-X]

     【例題】設機器字長為8位,寫出+37和-37的二進制。

      解析:37除二取余法得到的二進制數為100101,“+”為1,“-”為0,符號位在最高位

        [+37]=(+37)10=(+100101)2=(+00100101)2=00100101

        [-37]=(-37)10=(-100101)2=(-00100101)2=10100101

   ②原碼中0的表示不唯一

    整數原碼:[+0]=00...0     [-0]=10...0 

    小數原碼:[+0]=0.00...0  [-0]=1.00...0 

  ③原碼的移位規則:符號位不變,數值部分左移或右移,移出的空位歸0。左移是乘法,右移是除法。移動n位是乘或除2n

   【例子】 [0.0110000]=0.0110000

        [0.0110000]÷2=0.0011000

        [0.0110000]×2=0.1100000

三、反碼

  ①反碼與原碼的關系

    當X≥0,[X]=[X]

    當X<0,[X]=[X]的位取反(符號位不變)

    【例子】

      [+0.1001100]=0.1001100  [-0.1001100]=1.0110011

      [+1001100]=01001100   [-1001100]=10110011

  ②反碼中0的表示不唯一

    [+0]=00...0  [-0]=11...1

四、補碼 

  補碼的目的是使得減法也可以按照加法的方式來計算(加減法);同時,補碼可以將數的符號位和數值域采用統一方式處理。

 

    模(mod)的概念:對於某一確定的模,某數減去一個數,可以用加上那個數的負數的補數來替代。

    當X ≥ 0,[X]=(M+X)mod M=X,正數的補數等於其本身。

    當X<0,[X]=(M+X)mod M=M-|X|,負數的補數等於模與該數絕對值之差。

    【例子】 (5-2)mod 10=(5+8)mod 10=3,所以當模為10時,-2的補數為8。

  ①補碼與原碼、反碼的關系

    當X ≥ 0,[X]=[X]=[X]

    當X<0,[X]=[X]+1,[[X]]=[X]

    【例子】機器字長為8,求+37和-37的原碼、反碼、補碼

        [+37]=[+37]=[+37]=00100101

        [-37]=10100101

        [-37]=11011010

        [-37]=11011011

  ②補碼中0的表示是唯一的

    [+0]=00000000  [-0]=00000000

  ③補碼的表數范圍比原碼大

五、移碼

  移碼也稱為增碼、余碼,主要用於表示浮點數的階碼,因此一般表示整數。

    純整數移碼:[X]=2n+X  -2n≤X<2n

    純小數移碼:[X]=1+X  -1≤X<1

  ①移碼與補碼的關系:整數補碼的數值部分不變,符號取反即得整數移碼。反之亦然。

    當X≥0,[X]=[X]+2n

    當X<0,[X]=[X]-2n

    【例1】

      [+1101010] = 01101010

      [+1101010] = 11101010

      [-1101010] = 10010110

      [-1101010] = 00010110

     【例2】在字長為8位的機器中,[X]=27+X

      若X=+1100101 ,則[X]=27+1100101=10000000+1100101=11100101

      若X=-1100101 ,則[X]=27+(-1100101)=10000000-1100101=00011011

    【例3】求+12和-3的8位移127碼的二進制編碼形式

      (+12)10=1100,[+12]移127碼=127+12=(139)10=(1111111+1100)2=(10001011)2

      (-3)10=-11,[-3]移127碼=127-3=(124)10=(1111111-11)2=(01111100)2

  ②移碼中0的表示是唯一的

    純整數:[+0]=[-0]=10000000

  ③移碼的表數范圍與補碼一致

 

      

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM