早教吧 育儿知识 作业答案 考试题库 百科 知识分享

计算机中二进制减法的拓展问题——计算机数学高手进我作业有一道题:完成下列二进制数的减法运算:(b)00001100-11110111这道题分析说先把减数化成补码的形式,也就是要把11110111

题目详情
计算机 中 二进制 减法 的拓展问题—— 计算机 数学 高手进
我作业有一道题:
完成下列二进制数的减法运算:(b) 00001100-11110111
这道题分析说先把减数化成补码的形式,也就是要把11110111化成补码,怎么化啊?它的最高位已经是1了。
如果把一个二进制数例如00001111化成补码,先在最高位取1,成10001111,再把各位取反成11110000,加1得11110001,这就是00001111的补码,但是上面那个题它的第一位已经是1了,怎么化呀??
▼优质解答
答案和解析
如果人工计算,应该按照减法进行,即:
0000 1100 - 1111 0111 = 0001 0101。
但是,CPU中,只有加法器,并没有减法器,遇到减法,CPU就要将减数全部的位,都求反加一,再与被减数相加,就是:
0000 1100 + 0000 1001 = 0001 0101。 和人工计算的结果相同。
注意:这里讲的“减数全部的位,都求反加一”,并不是常说的求“补码”,这是在CPU中自动进行的,无论这个数字,原来是不是补码,只要是做“减法”,CPU都要自动转换,包括最高位。
上述说法,可以参考《计算机组成原理》。
一般常说的求“补码”,是针对负数而言,由人工进行的。
规则是:符号位为1,不要变化,仅仅对后面的数值位,由原码求反加一。