原碼、反碼、補碼

維基教科書,自由的教學讀本

原碼、反碼、補碼,是表示帶符號二進位數的最常用的方法。

原碼[編輯]

所謂原碼,就是一個符號位加原數絕對值。表面上,原碼已經可以表示出一些數字了,但是在實際的計算機中會引發一些問題。例如,0和-0的八位二進位原碼分別是00000000和10000000,但事實上它們倆是同一個數。所以,這就需要引進反碼和補碼的概念。

反碼[編輯]

所謂反碼,就是除了符號位,其他每一位都是原碼對應位異或1的值。換句話說,原碼這一位是0,反碼就是1,反之亦然。

與原碼同樣,反碼不能將0和-0看作同一個數。

補碼[編輯]

那麼,既然原碼和反碼都不能很好的將0和-0化為同一個數,這時候,補碼就派上用場了。

當數字的符號位為0(也就意味著≥0)時,補碼與原碼相同。而當數字的符號位為1(意味著≤1)時,則是反碼+1。

因此,0的八位二進位補碼為00000000,-0的八位二進位補碼為11111111+1=100000000。你看,這樣0和-0就能統一了。八位補碼10000000則代表-128。