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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

加减运算溢出判断

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

加減運算&溢出判斷

  • 加減運算
    • 原碼
    • 補碼
  • 符號擴展
  • 溢出判斷

加減運算

原碼

  • 加法:先判符號位。若相同,則絕對值相加,結果符號位不變。若不同,做減法,絕對值大的減去絕對值小的數,結果符號位與絕對值大的相同。
  • 減法:減數符號取反做加法運算。*注意機器字長,當左邊位出現溢出時,將溢位丟掉。

補碼

  • 參與運算的操作數均用補碼表示
    菜雞筆記:正數補碼與原碼相同,負數補碼取反加1

  • 二進制規則運算,逢二進一

  • 符號位與數值位按同樣的規則運算一起參與運算,符號位產生的進位要丟掉,結果的符號位由運算得出

  • 運算公式:[A+B]=[A]+[B](mod M)
    [A-B]=[A]+[-B](mod M)
    mod M運算是為了將溢出位丟掉
    *菜雞筆記:mod運算 求余運算 mod2即模2運算
    模運算的性質:帶余除法——設 x,m∈Z,m>0,則存在唯一決定的整數q(商)和r(余數),使得 x=qm+r,0<=r<m
    19 mod 12 = 7(及19/12=1…7)
    -3 mod 12 = 9 (-3對12取模為9)
    9 mod 12 = 9 (9對12取模為9)
    在模12的條件下,-3等價于9,|-3|+|9|=12
    -3 mod 12 = r
    -3 = (-1) * 12 + 9
    9 mod 12 = r
    9 = 0 * 12 +9 (mod12把整數分為12類余數(0~11),余數相同的為同類等價。)

  • 補碼運算結果亦為補碼
    【例】設機器字長為8位(含一位符號位),A = 15,B = 24.求[A+B],[A-B]
    解:
    A = +15 = 00001111 B = +24 = 00011000;得[A] = 00001111 [B] = 00011000
    [A + B]=[A] + [B]=00100111,其符號位為0,對應的真值為+39
    [-B]=11101000
    [A - B] = [A] + [-B]= 11110111,其符號為1,對應的真值為-9
    注意負數,原碼與補碼轉換:取反加1

  • 符號擴展

    在計算機算數運算中,有時必須把采用給定位數表示的數轉換成具有不同位數位數的某種表現形式。
    int–>long 短數據變為長數據。
    e.g. 8位–>16位。正數(原、反、補碼的形式都一樣)原有形式的符號都移到新形式的符號位上,新表示形式的所有附加位都用0進行填充。

    定點整數的符號擴展:在原符號位和數值位中間添加新位,正數都添0;負數原碼添0,負數反、補碼添1

    定點小數的符號擴展:在原符號位和數值位后面添加新位,正數都添0;負數原、補碼添0,負數反碼添1

    溢出判斷

    key:`正+正=負(上溢)、負+負=正(下溢)

    • 一位符號位,參加操作的兩個數符號相同,結果又與原操作數符號不同,則表示結果溢出
      菜雞筆記:AB:與&&、A+B:或||、非 !
      設A的符號為As,B的符號為Bs,運算結果的符號為Ss,則邏輯溢出表達式為:
      若V = 0,表示無溢出;若V = 1,表示有溢出。

    • 雙符號位(模4補碼
      運算結果的兩個符號位Ss1Ss2相同,表式未溢出;否則溢出,此時最高位符號代表真正的符號。(實際存儲時,只存儲一個符號位,運算時會復制一個符號位)
      (1)Ss1Ss2 = 00:表示結果為正數,無溢出
      (2)Ss1Ss2 = 01:表示結果正溢出(上溢)
      (3)Ss1Ss2 = 10:表示結果負溢出(下溢)
      (4)Ss1Ss2 = 11:表式結果為負數,無溢出
      邏輯表達式為:V = Ss ⊕ S1
      V = 0,無溢出;V = 1,有溢出。
    • 采用一位符號位根據數據位的進位情況判斷
      若符號的進位Cs與最高位數的進位C1相同,則說明沒有溢出。溢出的邏輯判斷表達式為V = Cs ⊕ C1,若V = 0,無溢出;V=1,有溢出。

    `

    總結

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

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