2的補碼詳解

2021-10-06 21:33:26 字數 976 閱讀 6158

cpu裡只有加法器並沒有減法器。那麼,計算機是如何進行減法運算的呢?被減數加上減數的補碼即可,這個補碼應該是2的補碼(這裡簡稱2補碼)。

1.什麼叫補碼?

比如十進位制數23的補碼是多少?100-23=77。23的補碼是77。355的補碼呢?1000-355=645。以此類推。也就是說十進位制數dec(n位)的補碼為:10^n-dec。綜上所述為10補碼概念。

2補碼是指什麼呢?2^n-bin(二進位制數)。比如8的二進位制數為0000 1000(8位為例),2補碼=2^8-0000 1000=1 0000 0000-0000 1000=1111 1000。也可以這麼算:1 0000 0000=1111 1111+1。2^8-0000 1000=1111 1111-0000 1000+1。1111 1111-0000 1000=1111 0111,也就是0000 1000每位取反。那麼,2補碼簡單求法為取反加一。

2.負數的表達方法

為什麼用2補碼來表達負數呢?咱們用容易理解的方式表達負數,看看會導致什麼結果吧。-8不採用8的2補碼,而用1000 1000來表達。最高位1表示負數。16-8=0001 0000+1000 1000=1001 1000(-24),結果不是8,而是-24,顯然是錯誤的。這樣的結果將導致cpu不僅需要加法器,還需要減法器。那麼採用2補碼方式結果會如何呢?16-8=0001 0000+1111 1000=1 0000 1000。由於是8位為例,第9位1將被捨棄,變為0000 1000(8),結果正確。所以,採用2補碼的方式來表達負數的話無需減法器這類硬體。

3.8位(char)二進位制數的數值範圍

127(0111 1111):最大數

126(0111 1110)

1(0000 0001)

0(0000 0000)

-1(1111 1111)

-127(1000 0001)

-128(1000 0000):最小數

1的補碼及2的補碼

一 計算機的負數表示 二 1的補碼one s complement 反碼 三 2的補碼two s complement 補碼 資料在計算機中由乙個乙個的0,1位元表示,所以在表示負數的時候,不能直接新增符號 來表示這是個負數,必須採用一些規範或者約定來區分正數和負數。有四種比較有名的表示負數的方法 ...

關於2的補碼

日期 2009年8月 5日 問乙個基本的問題。負數在計算機中如何表示?舉例來說,8在計算機中表示為二進位制的1000,那麼 8怎麼表示呢?很容易想到,可以將乙個二進位制位 bit 專門規定為符號位,它等於0時就表示正數,等於1時就表示負數。比如,在8位機中,規定每個位元組的最高位為符號位。那麼,8就...

關於2的補碼

問乙個基本的問題。負數在計算機中如何表示?舉例來說,8在計算機中表示為二進位制的1000,那麼 8怎麼表示呢?很容易想到,可以將乙個二進位制位 bit 專門規定為符號位,它等於0時就表示正數,等於1時就表示負數。比如,在8位機中,規定每個位元組的最高位為符號位。那麼,8就是00001000,而 8則...