計算機溢位是指:運算結果超出計算機的表示範圍。由此可知,相異的數相加,不管倆個運算元取值多少,結果都在有效範圍內,這樣是不會產生溢位的。
溢位有正溢位和負溢位之分,即正數相加產生溢位和負數相加產生溢位。正溢位和負溢位原理上是一樣的,我們來說說正溢位。
對於一個有N位二進位制的補碼,它能表示的數學範圍是—2^(N—1)~2^(N—1)—1
負數:—2^(N—1)到—1
正數:1到2^(N—1)—1
下面定義倆個事件:
1.最高有效位進位:對於N位補碼,第N—1位發生了進位;
2.符號位進位:對於N位補碼,第N位符號位發生。
我們定義4個邊界值,以8位有效字長為例:
A:最大正127(0111 1111)
B:最小正 1 (0000 0001)
C:最小負—128(1000 0000)
D:最大負—1 (1111 1111)
下面列出所有組合:
用M表示符號位;用N表示最高有效位;用O表示是否發生溢位;用P表示最高有效位進位;用Q表示符號位進位。則如圖所示:
我們能看出來,只要是發生溢位操作,“最高有效位進位P”和“符號位進位Q”必然一個是Y另一個是N;凡是不發生溢位操作的,則P和Q必然倆個都是Y或者倆個都是N。
這就是根據最高有效位和符號位發生進位的異或來判斷是否發生溢位的規律。
計算機溢位是指:運算結果超出計算機的表示範圍。由此可知,相異的數相加,不管倆個運算元取值多少,結果都在有效範圍內,這樣是不會產生溢位的。
溢位有正溢位和負溢位之分,即正數相加產生溢位和負數相加產生溢位。正溢位和負溢位原理上是一樣的,我們來說說正溢位。
對於一個有N位二進位制的補碼,它能表示的數學範圍是—2^(N—1)~2^(N—1)—1
負數:—2^(N—1)到—1
正數:1到2^(N—1)—1
下面定義倆個事件:
1.最高有效位進位:對於N位補碼,第N—1位發生了進位;
2.符號位進位:對於N位補碼,第N位符號位發生。
我們定義4個邊界值,以8位有效字長為例:
A:最大正127(0111 1111)
B:最小正 1 (0000 0001)
C:最小負—128(1000 0000)
D:最大負—1 (1111 1111)
下面列出所有組合:
用M表示符號位;用N表示最高有效位;用O表示是否發生溢位;用P表示最高有效位進位;用Q表示符號位進位。則如圖所示:
我們能看出來,只要是發生溢位操作,“最高有效位進位P”和“符號位進位Q”必然一個是Y另一個是N;凡是不發生溢位操作的,則P和Q必然倆個都是Y或者倆個都是N。
這就是根據最高有效位和符號位發生進位的異或來判斷是否發生溢位的規律。