负小数补码计算? 10
机器字长位8位(其中含一位符号位),用补码运算规则完成下列运算。A=0.0010101,B=-0.1101011,求A+B,并判断是否有溢出。...
机器字长位8位(其中含一位符号位),用补码运算规则完成下列运算。A=0.0010101,B=-0.1101011,求A+B,并判断是否有溢出。
展开
3个回答
展开全部
机器字长位8位(其中含一位符号位),用补码运算规则完成下列运算。
A = +0.001 0101,
B = -0.110 1011,
求 A + B,并判断是否有溢出。
------------------
直接计算:A + B = -0.101 011。
用补码计算:
A = +0.001 0101, [ A ]补 = 0001 0101。
B = -0.110 1011, [ B ]补 = 1001 0101。
求和: [ A + B ]补 = 1010 1010。
再由补码求真值: A + B = -0.101 011。
判断是否有溢出:
这是,正数+负数!
绝不可能溢出。
展开全部
C 的高位为 1,表示结果为负数,原码为 01010110(减 1 取反),恢复小数点(小数点左移 7 位), 符号为 -0.101011。 运算过程中没有8位进位,所以没有溢出。 用decimal验证C的小数为-0.671875(0.5 0.125 0.03125 为负数时补码为原码(1.1010)的反码,为负数时补码为原码的反码 +1(1.1011),小数没有码移。用9.52到数的话,会有很多小数位。这里我们以-9.625为例。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
去掉小数点(小数点右移7位,最高位为符号位)
A为正数用8位原码表示: 00010101
B为负数用8位补码表示: 10010101(01101011取反加1得到)
结果C=A+B=00010101+10010101=10101010
C的高位为1 表示结果为负数,转原码为01010110(减1取反),恢复小数点(小数点左移7位)和符号为-0.101011,运算过程没有发生进位超出8位,因此没有溢出。
用十进制验证
C的十进制为-0.671875(0.5+0.125+0.03125+0.015625=0.671875)
A(0.0010101)的十进制A'为0.125+0.03125+0.0078125=0.1640625
B(-0.1101011)的十进制B'为-(0.5+0.25+0.0625+0.015625+0.0078125)=-0.8359375
D=A'+B'=0.1640625-0.8359375=-0.671875
由于C=D,因此计算无误。
A为正数用8位原码表示: 00010101
B为负数用8位补码表示: 10010101(01101011取反加1得到)
结果C=A+B=00010101+10010101=10101010
C的高位为1 表示结果为负数,转原码为01010110(减1取反),恢复小数点(小数点左移7位)和符号为-0.101011,运算过程没有发生进位超出8位,因此没有溢出。
用十进制验证
C的十进制为-0.671875(0.5+0.125+0.03125+0.015625=0.671875)
A(0.0010101)的十进制A'为0.125+0.03125+0.0078125=0.1640625
B(-0.1101011)的十进制B'为-(0.5+0.25+0.0625+0.015625+0.0078125)=-0.8359375
D=A'+B'=0.1640625-0.8359375=-0.671875
由于C=D,因此计算无误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询