如何判斷整數(shù)運(yùn)算溢出
首先我們看下 無符號整數(shù)的加減法
對于一個(gè) 位的無符號二進(jìn)制整數(shù)
?有
所以??時(shí)就溢出了?這體現(xiàn)在最高位的進(jìn)位
再考慮下無符號整數(shù)的減法
對于? 因?yàn)闊o符號整數(shù)沒有負(fù)數(shù)的概念所以?
時(shí)就溢出了
運(yùn)算器減法運(yùn)算是用加上補(bǔ)碼實(shí)現(xiàn)的所以
而? 剛好是?
的補(bǔ)碼
所以最高位沒有產(chǎn)生進(jìn)為時(shí)就溢出了
有符號整數(shù)的溢出
假設(shè)? 是?
位整數(shù) 他們符號為記作?
地位記作?
顯然有
理論上?
實(shí)際結(jié)果分類討論
?
??
結(jié)果其實(shí)是?
沒有溢出?
? ?
? 因?yàn)檫M(jìn)位進(jìn)到符號位上去了 實(shí)際結(jié)果是?
?溢出了?
?
?
??
?
?結(jié)果其實(shí)是?
?沒有溢出?
??
?
? 實(shí)際結(jié)果是?
?沒有溢出?
?
?
??
?世界結(jié)果是?
?溢出了?
?
?
??
?世界結(jié)果是?
?沒有溢出?
所以就是? 時(shí)會溢出 這可以用異或運(yùn)算得到
標(biāo)簽: