1. 程式人生 > >原碼、反碼、補碼,計算機中負數的運算

原碼、反碼、補碼,計算機中負數的運算

原碼:把整數換成二進位制,就是原碼。負數的最高位表示符號位為1,正數為0.

            eg:單位元組的6原碼為:0000 0110 ; -6的原碼為1000 0110

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

            eg:單位元組的6反碼為:0000 0110 ; -6的反碼為1111 1001

補碼:正數的補碼還是其原碼;負數的反碼+1就是補碼。

            eg:單位元組的6補碼為:0000 0110 ; -6的補碼為1111 1010

在運算中,減去一個數,等於加上它的相反數。在計算機中也是如此,6-5在計算機中的運算過程是,-5轉換成補碼就是其相反數:為1111 1011.然後在相加 0000 0110 + 1111 1011 = 0000 0001。

真值就是數值在計算機中的二進位制表示。正數的真值是原碼,負數的真值就是補碼。計算機要做的只是把他們的真值拿來相加就ok了。總結一句話:計算機中儲存的都是補碼,正數原碼=反碼=補碼(不變);負數補碼=反碼(原碼取反)+1