反碼補碼是二進制常用的一種運算方式,在二進制中,為了區別正數和負數,在二進制的前年加以一位符號位,符號位0表示這個數為正數,符號位為1表示這個數為負數,這種形式的數碼稱為原碼
一、為什麼要用補碼
(01)在做運算時,如果兩個數用原碼錶示,需要比較兩數的絕對值大小,然後以絕對值大的一個減去絕對值小的一個,求出差後,以絕對值大的一個符號作為差值的符號。
(02)這樣計算比較麻煩,如果能用兩數的補碼代替上述的減法操作,就是運算器的電路結構大為簡化
二、什麼是補碼
(01)舉例,你下午五點鐘發現手錶停在了上午十點,這時你必須把表調到五點,這時有兩種調法,一種往回調5個小時,一種你往上調7個小時,10+7=17,17-12=5,這個例子説明10-5的運算可以用10+7來代替,這時我們説7為-5的補數,同樣這個道理可以用於二進制
(02)一種往回調5個小時,一種你往上調7個小時,10+7=17,17-12=5,這個例子説明10-5的運算可以用10+7來代替,這時我們説7為-5的補數,同樣這個道理可以用於二進制添加網絡視頻
三、補碼算法
(01)基於上述算法原理,對於有效數字(不包括符號位)n,當他為正數時(符號位為0),補碼與原碼相同,當為負數(符號位為1時),它的補碼為2的n次方減N
(02)為了避免在求補碼的過程中做減法運算,通常先求出N的反碼
(03),然後在負數的反碼上加1得出補碼,即二進制負數的補碼等於他的反碼加1
(04)如圖上所描述
四、舉例
(01)如圖,得出反碼,補碼