補碼運算


  

補碼如何實現 由減到加: 

  首先,我想講 一個故事:

       話說,戰國時期 季梁遇到一個 趕着車向北走的人,於是季梁就問他,“你要去哪里啊?” 那人就說 "楚國"於是季梁又問,"可是

     楚國不是在南方嗎?" 那人又說“沒關系,我的馬好。"

       其實,那人就給出了我們補碼的思路,你要去南方,可以直接向南方去,也可以一路向北,繞地球一圈,從而到達楚國。

 

  補碼也是這樣 ,因為計算機的定長表示,所以補碼的取值范圍是有周期的 

    如 : 0111 1111 的真值是 127,再加一的話,就是 1000 0000,真值為 -128 了。

 

  為了便於理解,可以用時鍾計算(12小時制的)

  9要撥到5,可以減4,也可以加8 ,所以此時 -4和+8是等價的  。

  那么 ,我們可以認為 8是4的補碼

  那么這兩個數有什么聯系呢? 沒錯他們數值和就相當於繞了時鍾一圈,用數學表達的話就是 兩數的絕對值相加 為 12

  類比到補碼  首先的明白一圈是多少 ?

  在八位的補碼中,有一位是表示符號位,所以表示數值的有 7 位,即  2^7 = 128

  於是用  128減真值 也就是所謂的 數值位取反,末位加一  的操作了。

 

  再回到時鍾, 9-4=9+[4]補=(9+8)%12    因為他會多走一圈,所以我們再在這里還要 %12,而計算機補碼是有周期的,不用這一步

  那么現在我們就可以推出   x-y=x+[y]補

 

 補碼運算規則:

  加法規則:[x+y]補 = [x]補 + [y]補

  減法規則:[x-y]補 = [x]補 + [-y]補

 

  1,[-y]補 可由: [y]補 全部取反末位加1 

  2,溢出:運算結果超出可表示范圍

  3,溢出的判斷:最高兩位向上進/借位不同則該運算溢出

  4,補碼求原碼:與原碼求補碼操作一樣 ,a-b=c,則a-c=b  ,另外也可以逆推 -1再取反

 

 

 ========== ======== ======== ======== ====== ===== ===== === == =

  白鹿洞二首·其一   王貞白(唐)

讀書不覺已春深,一寸光陰一寸金。
不是道人來引笑,周情孔思正追尋。

 

       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM