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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

补码加、减运算规则

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

在計算機中,通常總是用補碼完成算術的加減法運算。其規則是:
  [X+Y]補= [X]補 + [Y]補 ,[X-Y]補= [X]補 - [Y]補 = [X]補 + [-Y]補

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

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

(2) 兩個補碼數相加減時,若最高數值位向符號位送的進位值與符號位送向更高位的進位值不相同,也是運算結果溢出。

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

再次強調,這三種不同說法是對同一個事實的略有區別的表述,實現時用到的線路可以有所區別,但問題的實質是完全一樣的。請看 [X]補 + [Y]補 的運算情況:

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個使用一個符號位,后2個使用二個符號位。用前面說的任何一種表述解釋這里的溢出都是可以的。例如,對于(1),從正加正的得負,或數據位向符號位送的進位值為1,而符號位送向更高位的進位值卻為0,二者不相同,或在(5)中使用雙符號位方案時,其雙符號位結果為01,都是運算結果溢出。

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

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

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

為實現減運算,應將Y寄存器中補碼數據的負數表示送到加法器F,這可以通過送Y寄存器中每位數據的反碼并在F的最低位給出進位1輸入信號變通完成,用/Y→F和1→F控制命令實現。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。