補碼運算溢出怎么辦
2023-05-16 14:55:22 閱讀(1234)
兩個負(fù)數(shù)的補碼相加溢出怎么辦?
使用二進制計算的時候會出現(xiàn)溢出現(xiàn)象,是因為計算機都有它的上限和下限,太大的數(shù)值和太小的數(shù)值都是無法顯示出來的。 計算機中用補碼來表示和存儲數(shù)值,而在進行數(shù)值的算術(shù)運算時由于機器字長的限制往往會出現(xiàn)補碼溢出,導(dǎo)致計算結(jié)果錯誤。 針對這個問題,提出了一種根據(jù)溢出結(jié)果得到正確結(jié)果的計算方法: 兩個正數(shù)相加溢出時,將錯誤解加上2~(n+1)即為正確解; 兩個負(fù)數(shù)相加溢出時,將錯誤解減去2~(n+1)即為正確解。
8位二進制補碼運算-29-25,結(jié)果溢出了,怎么解決?
應(yīng)該是考兩個負(fù)數(shù)補碼的加法吧,要轉(zhuǎn)換為加法吧,不然把負(fù)號提取出來就太簡單了-29 ---->補碼:(29=16+8+4+1=(11101)二進制) 11100011-25 ----->補碼:(25=16+8+1=(11001)二進制) 11100111補碼用二進制加法 11100011 + 11100111 ——————— 11001010 (第八位進位舍去)補碼11001010 ------>原碼:10110110 轉(zhuǎn)化為十進制:-54
補碼溢出后怎么處理?
先一步步來 8位的-29的二進制原碼10011101 反碼11100010 補碼11100011 -25的原碼10011001 反碼11100110 補碼11100111 然后就是兩個數(shù)的補碼相加11100011+11100111得11001010 這個結(jié)果也是反碼 化成原碼就是減1再取反得10110110 最高位是符號位所以化成10進制就是-54 就是這么得來的。 計算時都要溢出的 否則計算就會錯誤 補碼也就沒意義了 所以希望你能懂溢出的原因!
補碼加法溢出怎么辦?
先一步步來 8位的-29的二進制原碼10011101 反碼11100010 補碼11100011 -25的原碼10011001 反碼11100110 補碼11100111 然后就是兩個數(shù)的補碼相加11100011+11100111得11001010 這個結(jié)果也是反碼 化成原碼就是減1再取反得10110110 最高位是符號位所以化成10進制就是-54 就是這么得來的。計算時都要溢出的 否則計算就會錯誤 補碼也就沒意義了 所以希望你能懂溢出的原因!
未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明出處