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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

原码/补码的加减运算and溢出判断

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

小數點的處理:
任意一個二進制數S都可以表示為

研究小數點就要研究階碼E的取值:

  • 若E=0,則表示純小數——代表定點小數;
    例0.1111表示+0.1111,1.1111表示-0.1111。
  • 若E=n,則表示純正數——代表定點正數;
    例01111表示+1111,11111表示-1111。
  • E=m,且0<m<n,小數點在中間n個數內浮動——代表浮點數。

定點數的運算:

1、運算中,采用補碼來表示定點數。

補碼表示定點整數時,和原碼、反碼相比的優點
符號位可以跟數值位一起參加運算
可以用加法方便的實現減法運算
0的表示是唯一的
可以多表示一個最小負數

2、定點數的移位運算
當某二進制數相當于小數點做n位左移或者右移,相當于該數乘以或者除以2^n
由于機器數的字長都是固定的,當機器數左移或者右移時,都會造成n位低位或者n位高位出現空缺

邏輯移位(無符號數)

邏輯移位的規則
左移高位移丟,低位補0
右移低位移丟,高位添0

算術移位

  • 當機器數為正
  • 例:設機器字長為8,A=+26
    A=+26=+11010
    [A]原=[A]補=[A]反=0,0011010

    移位操作機器數真值
    移位前0,0011010+26
    左移一位0,0110100+52
    左移兩位0,1101000+104
    右移一位0,0001101+13
    右移兩位0,0000110+6

    當機器數為正,三碼相等,左移右移都補0 。

    • 當機器數為負

    例:設機器字長為8,A=-26
    [A]原=1,0011010
    [A]補=1,1100110
    [A]反=1,1100101

    移碼操作機器數真值
    移位前1,0011010-26
    左移一位1,0110100-52
    右移一位1,0001101-13

    原碼——左移右移補0。

    移碼操作機器數真值
    移位前1,1100110-26
    左移一位1,1001100-52
    右移一位1,1110011-13

    補碼——左移補0,右移添1。

    移碼操作機器數真值
    移位前1,1100101-26
    左移一位1,1001011-52
    右移一位1,1110010-13

    反碼——左移右移都添1。

    定點數的加/減運算

    1、原碼

    • 加法規則:先判斷符號位,若相同,絕對值相加,結果符號位不變;若不同,則做減法,絕對值大的數減去絕對值小的數,結果與絕對值大的數相同。(同號求和,異號求差)
    • 減法規則:兩個原碼表示的數相減,首先將減數的符號取反,然后將被減數與符號取反后的減數按原碼加法進行運算。(同號求差,異號求和)

    例:[x]原=0.1101,[y]原=1.1001,求[x+y]原、[x-y]原?
    [x+y]原:
    符號位不同,做減法:
    [-y]原=0.0111

    最高數值位產生進位,所在數值位 .0100,再加上第一操作數的符號0

    [x-y]原:
    減數的符號取反,

    因為數值最高位產生進位,結果正上溢。

    2、補碼

    • 補碼加法
      兩個數的補碼相加,符號位參加運算,且兩數和的補碼等于兩數的補碼之和。

    例:x=+0.1011,y=-0.1001,求[x+y]補?
    [x]補=0.1011 [y]補=1.0111
    則:[x+y]補=0.1011+1.0111=0.0010(符號位進位舍去)
    即:[x+y]補=0.0010,真值為:+0.0010。

    • 補碼減法
      由于運算器僅有加法器,則:

    例:已知[x]補=0.0010,[y]補=1.1010,求[x-y]補?
    [y]補=1.1010,則[-y]補=0.0110
    則[x-y]補=0.0010+0.0110=0.1000。

    3、特殊的情況——溢出(補碼)

    碼制范圍
    原碼-127~127
    補碼-128~127
    反碼-127~127
    • 溢出產生的原因:當兩(小)數相加大于(1或)上界127,稱為上溢或者正溢出,兩(小)數相加小于(-1或)下界-128,稱為下溢或負溢出。
    • 發生溢出,數值位擴充,數值位“跑“到符號位,然后取代符號位。導致”兩正數相加等于負數,兩負數相加等于正數“。
    • 計算機判斷溢出的方法
      單符號——兩符號相同的運算,運算結果符號相反的為溢出。
    發生溢出的情況
    加法:符號相同的兩數相加
    減法:符號不同的兩數相減

    雙符號法(變形補碼法)——檢測正負溢出
    特點:

    • 兩位符號位要聯同數值部分一起參加運算。
    • 高位符號位產生的進位直接丟棄。

    原則:

    • 當兩位符號位不同時,表示溢出。
    • 高位符號位永遠代表真正的符號位。

    正溢出
    例:已知[x]補=00.1011,[y]補=00.0111,求[x+y]補=?

    負溢出:
    例:已知[x]補=11.0101,[y]補=11.1001,求[x+y]補=?

    當兩個單符號:
    當兩個單符號位補碼進行加減運算時,若最高數值號位向符號位的進位值C與符號位產生的進位輸出值S相同,則沒有溢出發生;如果兩個進位值不同,則發生溢出。
    判斷公式:C⊕S

    例:已知[x]補=1.0101,[y]補=1.1001,求[x+y]補=?

    例:已知[x]補=1.1000,[y]補=1.1000,求[x+y]補=?

    《計算機組成原理》——唐朔飛

    此次分享就到這里,歡迎大家指導指正~ 我是愛吃肉的小白yyyloki,如果你覺得不錯的話點個贊👍吧!或者你可以關注,持續更新計組的內容(ps:也許期末用的上)。我們下次見~886

    總結

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

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