在这些情况下是否会发生溢出?
Does overflow occur in any of these cases?
使用6-bit
二进制补码运算,在这些情况下是否会发生溢出?我相信有进位问题 b
,但没有溢出。
(a) 11001 + 01000
(b) 10111 – 00110
(c) 00111 + 01100
(d) 10110 + 00011
我之所以说 b
是一个进位而不是溢出的例子,是因为即使有一个进位位,结果也是两个数字相加的相同符号。
另外,结果可能大于字号所能容纳的大小
正在使用。这种情况称为溢出。
在我们的例子中,我们使用 6 位算法,因此我们可以表示从 -32 (100000
) 到 + 31 (011111
) 的数字。
如果两个数以二进制补码相加,一个为正,另一个为负,永远不会出现溢出。结果将是操作数范围内的数字。
所以根据你的书,我们有第 314 页的溢出规则。
If two numbers are added, and they are both positive or both negative, then overflow occurs if and only if the result has the opposite sign.
让我们看看所有的项目:
(a) carry-out but no overflow
111001 -7
+ 001000 +8
------ --
1000001 +1
(b) carry-out but no overflow
110111 -9
+ 111000 -6
------ ---
1101111 -17
这里我们必须首先使用减法规则,第 315 页。
To subtract one number (subtrahend) from another (minuend), take the twos complement (negation) of the subtrahend and add it to the minuend.
(c) no carry-out, no overflow
000111 +7
+ 001100 +12
------ ---
010011 +19
(d) no carry-out, no overflow
110110 -10
+ 000011 +3
------ ---
111001 -7
注意,在(a)
和(b)
中,字末尾有一个进位被忽略
使用6-bit
二进制补码运算,在这些情况下是否会发生溢出?我相信有进位问题 b
,但没有溢出。
(a) 11001 + 01000
(b) 10111 – 00110
(c) 00111 + 01100
(d) 10110 + 00011
我之所以说 b
是一个进位而不是溢出的例子,是因为即使有一个进位位,结果也是两个数字相加的相同符号。
另外,结果可能大于字号所能容纳的大小 正在使用。这种情况称为溢出。
在我们的例子中,我们使用 6 位算法,因此我们可以表示从 -32 (100000
) 到 + 31 (011111
) 的数字。
如果两个数以二进制补码相加,一个为正,另一个为负,永远不会出现溢出。结果将是操作数范围内的数字。
所以根据你的书,我们有第 314 页的溢出规则。
If two numbers are added, and they are both positive or both negative, then overflow occurs if and only if the result has the opposite sign.
让我们看看所有的项目:
(a) carry-out but no overflow
111001 -7
+ 001000 +8
------ --
1000001 +1
(b) carry-out but no overflow
110111 -9
+ 111000 -6
------ ---
1101111 -17
这里我们必须首先使用减法规则,第 315 页。
To subtract one number (subtrahend) from another (minuend), take the twos complement (negation) of the subtrahend and add it to the minuend.
(c) no carry-out, no overflow
000111 +7
+ 001100 +12
------ ---
010011 +19
(d) no carry-out, no overflow
110110 -10
+ 000011 +3
------ ---
111001 -7
注意,在(a)
和(b)
中,字末尾有一个进位被忽略