原碼、反碼、補碼
原碼、反碼、補碼,是表示帶符號二進制數的最常用的方法。
原碼
編輯所謂原碼,就是一個符號位加原數絕對值。表面上,原碼已經可以表示出一些數字了,但是在實際的計算機中會引發一些問題。例如,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。