计算机中二进制减法的问题

有一道作业题,要求完成下列二进制数的减法运算:
    0000 1100 - 1111 0111
这道题分析说先把减数化成补码的形式,也就是要把1111 0111化成补码。
如果把一个二进制数化成补码,先在最高位取1,再把各位取反加1。
但是上面那个题它的第一位已经是1了,怎么化呀??
悬赏分:0 - 解决时间:2010-3-12 21:21
;--------------------------------------------------------
最佳答案:

如果人工计算,应该按照减法进行,即:

    0000 1100 - 1111 0111 = 0001 0101

但是,CPU中,只有加法器,并没有减法器,遇到减法,CPU就要将减数全部的位,都求反加一,再与被减数相加,就是:

    0000 1100 + 0000 1001 = 0001 0101

和人工计算的结果相同。

.

注意:这里讲的“减数全部的位,都求反加一”,并不是常说的求“补码”,这是在CPU中自动进行的。
无论这个数字,原来是不是补码,只要是做减法,CPU都要自动转换,包括最高位。
上述说法,可以参考《计算机组成原理》。

.

一般常说的求“补码”,是由人工进行的,不是在 CPU 内部进行的。
规则是:对于负数,符号位为1,不要变化,仅仅对后面的数值位,由原码求反加一。

;--------------------------------------------------------
回答者: 做而论道 - 十二级   2010-3-11 15:27
提问者对于答案的评价:谢谢
原题网址:http://zhidao.baidu.com/question/141358990.html
;--------------------------------------------------------

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值