古詩詞大全網 - 古詩大全 - 溢出和進位的區別

溢出和進位的區別

溢出,本是通用的名詞。可以理解為:容器太小。

但是,計算機專業中,超過容器範圍的事情,就分成了“進位”和“溢出”兩種說法。

人類所用的:自然數、整數。

在計算機專業人嘴裏,就改稱為:無符號數、帶符號數。

不論什麽數,在計算機中,都是用“二進制機器碼”表示和存儲。

8 位的二進制機器碼,

 可代表無符號數的範圍是:0~255。

 可代表帶符號數的範圍是:-128~+127。

當運算結果,超出了上述的範圍,必然就會溢出。

Intel 設計 CPU 時,規定了兩個標誌位。

 無符號數運算結果超出上下限,將有:CF = 1,這就叫“進位”。

 有符號數運算結果超出上下限,將有:OF = 1,這才叫做“溢出”。

--------------------

計算:1111 1110 + 1111 1101 = (進位 1) 1111 1011。

如果這是無符號數,就是:254 + 253 = (256)? 251。

  結果應該是 507,超出了 255,進位=1。

如果這是帶符號數,就是:(-2) + (-3) = (舍棄進位) (-5)。

結果不超範圍,沒有溢出,結果正確。

--------------------

計算:0111 1110 + 0111 1101 = (0) 1111 1011。

如果這是無符號數,就是:126 + 125 = (0)? 251。

結果不超出 255,結果正確。進位=0。

如果這是帶符號數,就是:+ 126 + 125 = (舍棄進位) (-5)。

  結果超範圍,溢出了,結果符號不對,結果錯。

--------------------