原碼反碼補碼移碼


簡單來說:

1)當真數為正數時,原碼、反碼和補碼的表示形式相同,符號位為 "0",數值位和真值相同

2)當真值位負數時,原碼、反碼和補碼的表示形式不相同,符號位為 "1",並且對於數值部分:補碼是原碼的”取反加1“,反碼是原碼的“每位取反”

3)對於同一個真值,補碼和反碼只差一個符號位;

4)移碼只表示整數

5)對於不同的機器數表示 ±0,其形式不同:

[+0]  ≠ [-0]

[+0] = [-0]

[+0] ≠ [-0]

[+0] = [-0]

 

大致的基本知識就是上述這些,如果讀者還想了解更多的話,請耐心閱讀下面的內容;

如果還滿意的話,麻煩為這篇文章點個贊!!!謝謝!!!

原碼的定義:

  [X]源 = 

  整數時:

   0 ,X      ( 2n   >  X  ≥  0 )  

   2n-X          (  0   ≥  X   > -2)

X為真值,n為整數的位數

例如:

x = +1110    [x] = 0,1110 

x = -1110    [x] = 24 - (-1110) = 1,1110

小數時:

X   ( 1 >  X  ≥  0 )

1-X   ( 0 ≥  X  >-1 )

X為真值

例如:

x = +0.1101   [x] = 0.1101

x = -0.1101    [x] = 1 - (-0.1101) = 1.1101

 

小測試:

1.已知[x] = 1.0011 求x

解:x = 1 - [x] = 1 - 1.0011 = -0.0011

2.已知[x] = 1,1100 求x

解: x = 24 - [x] = 10000 - 1,1100 = -1100

3.已知[x] = 0.1101 求x

解:x = +0.1101

4.求 x=0 的原碼

解: 設 x = +0.0000   [+0.0000] = 0.0000

        設 x =  -0.0000   [-0.0000] = 1.0000

故:[-0] ≠ [+0]

對於整數:[+0] = 0,0000

                  [-0]  = 1,0000

 

總結:

優點:表示方法簡單,直觀

缺點:不適合運用於加減運算,需要判斷正負、確定前后位置、判斷結果符號····

規定:用小數點 "." 將符號位和數值位隔開的機器數一律為小數;

用逗號 "," 將符號位和數值位隔開的機器數一律位整數;  (參照上面例子)

 

補碼:

補數表示法:

一個負數可以用其正的補數來代替,這個正的補數可以用此負數加模來求得。

一個正數和負數互為補數時,他們的絕對值之和就是模。

 

正數的補數就是它本身。

性質:補碼的和等於和的補碼

6 - 3 = [ [6-3] ] = [ [6] + [-3] ] = [0,110 + 1,101]

        = [10,011]

        = [ 0,011 ]

        = 3

補碼的定義:

 [X]補 = 

  整數時:

  0,X    ( 2n >  X  ≥ 0 )

  2n+1 + X    ( 0 >  X  ≥ -2n

                                 (mod 2n+1)

X為真值,n為整數位數(不包括符號位)

例如:

x = +1010  求x的補碼。

解:[x] = 0,1010

x = -1011000  求x的補碼。

解:[x] = 27+1 = (-1011000)

               = 100000000

                   -  1011000

                   1,0101000

小數時:

  X    ( 1 >  X  ≥ 0 )   (X為真值)

  2+X    (0 >  X  ≥ -1 )   (mod 2)

例如:

x = +0.1110   [x] = 0.1110

x = -0.1100000   [x] = 2 + (-0.1100000)

   =10.0000000

     - 0.1100000

       1.0100000

總結補碼計算方法:

1.補碼 = 反碼 + 1

2.負數補碼求法:符號位不變,數值位從左到右依次取反,最右邊的1及其后的0不變

例如: x = -0.1100100   --->  x = 1.0011100     

3.補碼的補碼是原碼

 

 

 

 

 移碼:

補碼表示很難判斷其真值的大小

十進制 二進制 補碼
x = +21 +10101 0,10101
x = -21 -10101 1,01011
x = +31 +11111 0,00001
x = -31 -11111 1,00001

 

 

 

 

x + 25

x = +21 +10101 + 100000   =110101
x = -21 -10101 + 100000 =001011
x = +31 +11111 +100000 =111111
x = -31 -11111 + 100000 =000001

 

 

 

1的個數越多就大

移碼的定義:

  [X]移 = 2n + X    (2n >  X  ≥ -2n)

X為真值,n為整數的位數。

移碼和補碼數值位相同,符號位相反

小測試:

x = 10100    [x] = 25 + 10100 = 1,10100

x = -10100    [x] = 25 - 10100 = 0,01100

特點:

1.[+0] = [-0]

2.當x=5事,最小真值(-2 = -100000) 的移碼全0 = 25 - 100000 = 000000

 

 


免責聲明!

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



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