1. 程式人生 > >有符號數溢位的判斷

有符號數溢位的判斷

        對於兩個w位寬的有符號整數來說, 其能夠表示的範圍在-2的w-1次方到2的w次方-1之間。因此有兩種情況能夠使兩個數相加溢位。

         (1)同符號數相加

         (2)異符號數相減

        如果溢位,那麼相加的結果超過了能夠表示的範圍,則有可能出現兩個正數相加得到一個負數,所以相加的結果小於兩個加數。或兩個負數相加得到一個正數,所以相加的結果大於兩個加數。

         判斷兩個有符號整數相加是否溢位的判斷如下

         #define   FLASE     (0)

         #define   TURE       (1)

         bool add(int a, int b, int *c)

         {

                  *c = a + b;

                  return((a > 0 && b > 0 && (*c<a || *c<b) || (a < 0 && b < 0 && (*c>a || *c>b)));

         }