日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

补码加、减运算规则

發(fā)布時(shí)間:2024/3/13 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 补码加、减运算规则 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在計(jì)算機(jī)中,通常總是用補(bǔ)碼完成算術(shù)的加減法運(yùn)算。其規(guī)則是:
  [X+Y]補(bǔ)= [X]補(bǔ) + [Y]補(bǔ) ,[X-Y]補(bǔ)= [X]補(bǔ) - [Y]補(bǔ) = [X]補(bǔ) + [-Y]補(bǔ)

這表明,有了補(bǔ)碼表示的被加(減)數(shù)和加(減)數(shù),要完成計(jì)算補(bǔ)碼表示的二數(shù)之和或二數(shù)之差,只需用二數(shù)的補(bǔ)碼直接執(zhí)行加減運(yùn)算即可,符號(hào)位與數(shù)值位同等對(duì)待,一起參加運(yùn)算,若運(yùn)算結(jié)果不溢出,即不超出計(jì)算機(jī)所能表示的范圍,則結(jié)果的符號(hào)位和數(shù)值位同時(shí)為正確值。此外,還可以看到,實(shí)現(xiàn)減運(yùn)算時(shí),用的仍是加法器線路,把減數(shù)的負(fù)數(shù)的補(bǔ)碼送加法器即可。在有了一個(gè)數(shù)的補(bǔ)碼之后,求這個(gè)數(shù)的負(fù)數(shù)的補(bǔ)碼,是簡(jiǎn)單地把這個(gè)數(shù)的補(bǔ)碼逐位取反再在最低位加1即可得到。例如,[Y]補(bǔ)=101101,則[-Y]補(bǔ)=010011,這大大簡(jiǎn)化了加減運(yùn)算所用的線路和加減運(yùn)算的實(shí)現(xiàn)算法。

下面的問題是如何檢查加減運(yùn)算中的溢出問題。通常有三種表述方式(說法):
  (1) 兩個(gè)符號(hào)相同的補(bǔ)碼數(shù)相加,如果和的符號(hào)與加數(shù)的符號(hào)相反,或兩個(gè)符號(hào)相反的補(bǔ)碼數(shù)相減,差的符號(hào)與減數(shù)的符號(hào)相同,都屬于運(yùn)算結(jié)果溢出。這種判別方法比較復(fù)雜,要區(qū)別加還是減兩種不同運(yùn)算情況,還要檢查結(jié)果的符號(hào)與其中一個(gè)操作數(shù)的符號(hào)的同異,故很少使用;

(2) 兩個(gè)補(bǔ)碼數(shù)相加減時(shí),若最高數(shù)值位向符號(hào)位送的進(jìn)位值與符號(hào)位送向更高位的進(jìn)位值不相同,也是運(yùn)算結(jié)果溢出。

(3) 在采用雙符號(hào)位(如定點(diǎn)小數(shù)的模4補(bǔ)碼)運(yùn)算時(shí),若兩個(gè)符號(hào)位的得值不同(01或10)則是溢出。01表明兩個(gè)正數(shù)相加,結(jié)果大于機(jī)器所能表示的最大正數(shù),稱為"上溢";10表明兩個(gè)負(fù)數(shù)相加,結(jié)果小于機(jī)器所能表示的最小負(fù)數(shù),稱為"下溢";雙符號(hào)位的高位符號(hào)位,不管結(jié)果溢出否,均是運(yùn)算結(jié)果正確的符號(hào)位,這個(gè)結(jié)論在乘法運(yùn)算過程中是很有實(shí)際意義的。請(qǐng)注意,在采用雙符號(hào)位的方案中,在寄存器和內(nèi)存儲(chǔ)器存儲(chǔ)數(shù)據(jù)時(shí),只需存一位符號(hào),雙符號(hào)位僅用在加法器線路部分。

再次強(qiáng)調(diào),這三種不同說法是對(duì)同一個(gè)事實(shí)的略有區(qū)別的表述,實(shí)現(xiàn)時(shí)用到的線路可以有所區(qū)別,但問題的實(shí)質(zhì)是完全一樣的。請(qǐng)看 [X]補(bǔ) + [Y]補(bǔ) 的運(yùn)算情況:

01011        10101       10100     
 + 01000       + 11000      + 11001     
 _______________________________________   
  10011       101101      101101     
  (1)       (2)       (3)

10111       001011      110111
 + 10101      + 001000     + 110101


101000       010011      1101100
  (4)       (5)       (6)

這全都是溢出情況,前4個(gè)使用一個(gè)符號(hào)位,后2個(gè)使用二個(gè)符號(hào)位。用前面說的任何一種表述解釋這里的溢出都是可以的。例如,對(duì)于(1),從正加正的得負(fù),或數(shù)據(jù)位向符號(hào)位送的進(jìn)位值為1,而符號(hào)位送向更高位的進(jìn)位值卻為0,二者不相同,或在(5)中使用雙符號(hào)位方案時(shí),其雙符號(hào)位結(jié)果為01,都是運(yùn)算結(jié)果溢出。

凡補(bǔ)碼加減運(yùn)算其結(jié)果不屬于上述情況的,均不是溢出,結(jié)果的符號(hào)位和數(shù)值位均正確。這里雖然討論的都是加法運(yùn)算,對(duì)減運(yùn)算亦適用。正減負(fù)等同正加正,正減正等同正加負(fù),正如前面說過的,減運(yùn)算也是用加法器完成的。例如:
  
  01011      11101      001011     111101
 + 00100     + 11010     + 000100    + 111010
  
  01111      10111      001111     110111
  (1)      (2)       (3)      (4)

(1)、(2)使用一位符號(hào)位,(3)、(4)使用二位符號(hào)位,符號(hào)位送向更高位的進(jìn)位值,不論其值為0或?yàn)?一律在取模后丟棄。

有了上述說明,就可以用圖2.5的邏輯線路完成二補(bǔ)碼數(shù)的加減運(yùn)算。
運(yùn)算前,X、Y寄存器分別存儲(chǔ)被加(減)數(shù) 和 加(減)數(shù),計(jì)算結(jié)果存回X寄存器;F為加法器,能在命令X→F和Y→F信號(hào)的控制下接收兩個(gè)寄存器中的數(shù)據(jù)并完成加法運(yùn)算,運(yùn)算結(jié)果在F→X命令信號(hào)的控制下接收回X寄存器中。

為實(shí)現(xiàn)減運(yùn)算,應(yīng)將Y寄存器中補(bǔ)碼數(shù)據(jù)的負(fù)數(shù)表示送到加法器F,這可以通過送Y寄存器中每位數(shù)據(jù)的反碼并在F的最低位給出進(jìn)位1輸入信號(hào)變通完成,用/Y→F和1→F控制命令實(shí)現(xiàn)。

總結(jié)

以上是生活随笔為你收集整理的补码加、减运算规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。