题目
5.已知x和y,用变形补码计算x+y,同时指出结果是否溢出。(1)x=11011,y=00011(2)x=11011,y=-10101(3)x=-10110,y=-00001
5.已知x和y,用变形补码计算x+y,同时指出结果是否溢出。(1)x=11011,y=00011(2)x=11011,y=-10101(3)x=-10110,y=-00001
题目解答
答案
[x+y]补=[x]补+[y]补(1)x=11011,y=00011[x+y]补=0011011+0000011=0011110;没有溢出,x+y=11110(2)x=11011,y=-10101[x+y]补=0011011+1101011=0000110;0 0 1 1 0 1 1+ 1 1 0 1 0 1 1 0 0 0 0 1 1 0没有溢出,x+y=00110(3)x=-10110,y=-00001[x+y]补=1101010+1111111=1101001;没有溢出,x+y=-10111
解析
变形补码加法的核心在于:
- 符号位扩展:将原码转换为变形补码时,符号位扩展为两位(如正数符号位为
00,负数为11)。 - 模2运算:相加时按位进行模2加法,忽略最高位的进位。
- 溢出判断:若两正数相加结果为负,或两负数相加结果为正,则溢出。
第(1)题
x=11011(正数),y=00011(正数)
- 变形补码转换:
x变形补码:00+11011→0011011y变形补码:00+00011→0000011
- 加法运算:
0 0 1 1 0 1 1 + 0 0 0 0 0 1 1 = 0 0 1 1 1 1 0 - 结果分析:
- 符号位为
00(正数),与两正数相加结果一致,无溢出。 - 结果原码:去掉符号位 →
11110
- 符号位为
第(2)题
x=11011(正数),y=-10101(负数)
- 变形补码转换:
x变形补码:00+11011→0011011y变形补码:原码10101→ 取反01010→ 加101011→ 符号位11→1101011
- 加法运算:
0 0 1 1 0 1 1 + 1 1 0 1 0 1 1 = 0 0 0 0 1 1 0 - 结果分析:
- 符号位为
00(正数),与正负相加结果一致,无溢出。 - 结果原码:去掉符号位 →
00110
- 符号位为
第(3)题
x=-10110(负数),y=-00001(负数)
- 变形补码转换:
x变形补码:原码10110→ 取反01001→ 加101010→ 符号位11→1101010y变形补码:原码00001→ 取反11110→ 加111111→ 符号位11→1111111
- 加法运算:
1 1 0 1 0 1 0 + 1 1 1 1 1 1 1 = 1 1 0 1 0 0 1 - 结果分析:
- 符号位为
11(负数),与两负数相加结果一致,无溢出。 - 结果原码:去掉符号位 →
-10111
- 符号位为