大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
有一道作业题,要求完成下列二进制数的减法运算:
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
;——————————————————–
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/189881.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...