C/C++ 無符號整數加法溢出判斷

c/c++沒有獲得溢出位狀態的方法,所以需要用另外的方法判斷。

 對於c = a + b,如果c < a || c < b 則已經溢出了

證明如下

1.設a,b,c的類型長度爲n位則有a<2^n,b<2^n

2.當a+b未溢出則必然有c>a且c>b(這個不用證明了吧?)

3.當a+b溢出則a+b>=2^n

4.因爲b<2^n則a+b<a+2^n

5.對於n位2進制數,a+2^n與a相等

6.因爲3,4,5所以a+b<a


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章