
看到这种题目首先根据八位字长可得出无符号数的范围为:0-255,有符号数的范围为:-128-127每个变量的真值和机器码写出来,然后算变量的真值和机器码,根据范围判断是否溢出。
类型转化不影响机器码,例如unsigned int x的真值和int x的机器码是一样的。
X:真值:134 ,机器码:86H
Y:真值:246,机器码:F6H
m:真值:-122,机器码:86H
n:真值:-10,机器码:F6H
Z1:真值:-112,机器码:90H
Z2:真值:380,机器码:7CH
K1:真值:-112,机器码:7CH
K2:真值:-132,机器码:FCH
算的时候真值和真值相运算,机器码和机器码相运算。
因此第一问和第二问就求出来了

这是加法器的图,可以看出当Sub为0时为加法,sub为1的时候是减法,加法器只负责运算并且产生标志,所以有无符号运算都可以用同一个加法器。
两个正数相加和两个负数相加才可能发生溢出,并且如果生成的数的符号位与两个数的符号位不同就发生了溢出。

6128

被折叠的 条评论
为什么被折叠?



