補碼加減法_數字編碼

來源:互聯網
上載者:User

基本的規則就是:
加法:
整數: [A]補 + [B]補 = [A+B]補 (mod 2^(n+1))
小數: [A]補 + [B]補 = [A+B]補 (mod 2)

減法:
整數: [A-B]補 = [A]補 + [-B]補 (mod 2^(n+1))
小數: [A-B]補 = [A]補 + [-B]補(mod 2)
[-B]補的求法就是 [B]補的連同符號位在內,每位求反加一

ps:這裡假定了A,B都是正數

如果你直接寫出了負數的補碼,那麼直接計算就好了。由[-B]補求解[B]補,或者由[B]補求[-B]補,都是連同符號位每位求反加一,本身就表達著,只要是補碼,直接計算即可。
下面的例子可以很好說明:

設機器數字長為8位,一位用作符號位。若A = +15, B = +24,求[A-B]補,並且還原成真值。
ps:這裡的還原你真的是把求出的補碼算出真值不是用15 - 24 = -9口算的嗎。。

解:首先是換成二進位原碼:A = +15 = 0,0001111; B = +24 = 0,0011000
換成補碼:[A]補 = 0,0001111, [B]補 = 0,0011000,[-B]補 = 1,1101000

以上是標準的算前準備
[A-B]補 = [A]補 + [-B]補
0,0001111
+1,1101000
= 1,1110111

也可以這麼想:直接求A-B補碼相減:
0,0001111
- 1,1101000
= 1,1110111

從第九位(未知)借來一個2,求得結果也是我們需要的補碼。

真值為-9。

總結:不論運算元是正還是負,在做補碼運算時,只需要將符號位和數值部分一起參加運算,並且將符號位產生的進位自然丟掉即可。也可以從更高位借過來一個參與運算,這樣,符號位會用1的方式表示,好吧我沒你大,形成的是負值。

在這種減法形式的計算中,需要注意的是借位的事情。
十進位中:
1000
- 99
=901

過程是這樣:1000的個位是0減不動,向高位借來一個10,在高位看來只是1但是下面看來是10,好的,10可以減動9了得到個位是1;1000的十位是0,而且還被個位借去了一個,所以嚴格來說十位叫-1,好的,-1減不動9,需要從百位借,百位給了一個在它看來是1,但在十位看來是10,好的,十位借到了,先還自己的債務1,只剩9了,9再減9,可以減動了,得到0;1000的百位自己也是0,且被借走了一個,因此可以是-1,往千位借,還完債務,剩9,沒什麼好減的了,於是最終結果還是9.
所以得到901.

同理,在二進位下,也是一樣的思路。
用一個例子來看:求1,0100011 - 1,1010011
1,0100011
-0,0101101
=0,1110110

過程:也是從第一位開始減,1-1 = 0;第二位:1-0 = 1;第三位:0-1 = 1,且第四位有1的負債(不看存款);
第四位:存款是0,負債是1,那麼自己就是-1啊,減不動1,於是借來2,先還負債,剩下1,再減1 = 0;
第五位:也負債1,借來1,減的是0所以還剩1;
第六位:本來是1,被第五位借走了,所以只剩0了,減不動1,所以向第七位借來2,減去1還剩1;
第七位:本身是0,被第六位借走了1,所以是-1,要減0,先借來2,還債後剩1,減0還是1
第八位:本身是1,被借走了,好嘛,那就 剩0了,剛好需要減的也是0,不要再往上借了。當然,需要借的時候也行,那個超出八位以後的東西,從虛空中拿來,不用還。

溢出判斷:
1.只有一位符號位的,實際參加操作的兩個數,這個是指,如果是A-B,看到是[A]補和[-B]補的符號位
如果這兩個符號位相同,但是求出來的結果(補碼結果)符號位不同,那麼就是溢出了。

2.有兩位符號位:當兩位符號位不同時表示溢出,否則無溢出。
無論是否有溢出,最高位的符號位表示真正的符號。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.