二進位制中的原碼 補碼和反碼

2021-09-12 16:26:57 字數 942 閱讀 7204

好久沒接觸二進位制的原碼、補碼、反碼了,今天做劍指offer又遇到了,現在記錄一下。

1.正數的原碼=反碼=補碼。

2.負數的反碼為原碼除符號位其餘位取反,負數的補碼=反碼+1

原碼:

使用高位作為符號位。最高位為0時表示正數,最高位為1時則表示為負數。其餘位使用此數字數值本身二進位制的絕對值表示。原碼有2個缺點:

(1)零分兩種 +0 和 -0

(2)不便於加減運算,在進行不同符號的加法運算或者同符號的減法運算的時候,不能直接判斷出結果的正負。你需要將兩個值的絕對值進行比較,然後進行加減操作 ,最後符號位由絕對值大的決定。於是反碼就產生了。

反碼:

使用高位作為符號位。最高位為0時表示正數,最高位為1時則表示為負數。正數的反碼還是正數本身,負數的補碼就是其絕對值相同的正數取反的結果。即在原碼的基礎上,符號位不變,其他位取反的結果。解決了加減運算的問題,但還是有正負零之分,然後就到補碼了

補碼:

使用高位作為符號位。最高位為0時表示正數,最高位為1時則表示為負數。正數的補碼就是正數本身,負數的補碼就是其原碼取反加一的結果。補碼設計的目的,就是講將原二進位制數,分一半做負數,而取反加一的規律則是在此設計的基礎上歸納得來的。所以,使用「取反加一」來定義補碼,是與設計相悖的。

補碼的設計,方便了二進位制的加減運算。

如:7(0000) - 8(1000) = -1(1111);其實就是對應二進位制數的相加。

補碼的作用其實有兩個:

將原有二進位制分一半做負數。

方便了加減運算。將減法運算轉變為加法運算;兩個補碼相加時,如果高位(符號位)有進製,那麼符號位溢位後仍然符合運算規則,即運算結果正確(正如上例所示)。

參考:如果了解更詳細可以參考

二進位制的原碼補碼和反碼

資料在計算機是以二進位制的形式來儲存的,按照資料的補碼來儲存的。正數的原碼 反碼 補碼都是相同的。負數的補碼就是它的相反數的原碼的各個位取反後,再 1得到的。0的原碼,補碼都為0。1個位元組可以表示2的8次方 256個數,按照正負數劃分就把它表示成範圍 128 127。二進位制的八位數裡邊用最高位表...

二進位制的原碼 反碼 補碼

如何表示二進位制數的正負呢 通常採用的方法是在二進位制數的前面加一位符號位,符號位為0表示這個數是正數,符號位位1表示這個數字負數,這種形式的數就稱為原碼。為什麼需要二進位制補碼 在做減法時,如果兩個數時用原碼表示的,則首先需要比較兩數絕對值的大小,然後以絕對值大的乙個數作為被減數 絕對值小的乙個作...

二進位制原碼 反碼 補碼詳解

原碼 原碼是指將最高位作為符號位 0表示正,1表示負 其它數字位代表數值本身的絕對值的數字表示方式。例如 數字6 在計算機中原碼表示為 0 000 0110 其中,第乙個數字0是符號位,0表示正數,0 000110是數字6的二進位制資料表示。數字 6 在計算機中原碼表示為 1 000 0110 以上...