源碼、反碼、補碼

源碼、反碼、補碼


    引入原碼、反碼和補碼的目的是爲了解決減法問題。因爲計算機CPU的運算器中只有加法器,要把減法轉化成加法來計算。

計算機中沒有減法器的原因

    在做減法運算時,如果兩個數十用原碼錶示的,則首先需要比較兩個數絕對值的大小,然後以絕對值大的一個作爲被減數、絕對值小的一個作爲減數,求出差值,並以絕對值大的一個數的符號作爲差值的符號。不難看出,這個操作過程比較麻煩,而且需要使用數值比較電路和減法運算電路。如果能用兩數的補碼相加代替上述的減法運算,那麼計算過程中無需使用數值比較電路和減法運算電路了,從而使運算器的電路結構大爲簡化。

原碼:將一個整數,轉換成二進制,就是其原碼。

反碼:正數的反碼就是其原碼;負數的反碼是將原碼中除符號位以外,每一位取反。

補碼:正數的補碼就是其原碼;負數的補碼是反碼+1;如單字節5的補碼爲:0000 0101;-5的原碼爲1111 1011。

   

1.二進制數中,兩數的補碼之和等於兩數和的補碼。

2.補碼=反碼+1

3.反碼=原碼除符號位外其他數值取反(即該數的絕對值取反),即“0”變“1”,“1”變“0”。

4.任何正數的原碼、反碼、補碼的形式完全相同。

5.在計算機中,有符號的數都是採用補碼來表示的。

6.計算的時候,符號位也參與運算。



例子:使用補碼計算“-16+11”的運算:

    1 1 1 1 0 0 0 0 +    -16的補碼

    0 0 0 0 1 0 1 1      11的補碼

    __________________

    1 1 1 1 1 0 1 1       -5的補碼


    如果是“-16-11”,那麼久轉化爲加法運算“-16+(-11)”

    

    1 1 1 1 0 0 0 0 +    -16的補碼

    1 1 1 1 0 1 0 1     -11的補碼

    ———————————

    1 1 1 1 0 0 1 0 1    -27的補碼


  

        

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章