在进行除法运算时,也就是多次进行:移位、相减、移位、相减 ... 。
移位,可以是 “被除数左移”,也可以是 “除数右移”。
相减时,如果够减了则减,商上 1;如果不够减就不减,商则上 0。
怎么知道够减不够减?
人工计算时,就是用肉眼观察出来的。
由计算机计算时,就又是一种方法了。
在网络上,常常可以看到下面这种图片。
在计算机专业的教材中,普遍都有图中这种说法。计算机专业的网友,一定都见到过的。
但是,课本中这种说法,起码有三个错误。 其原因就是计算机专家,都不懂计算机的电路设计,冒充内行,蒙骗计算机专业的学生。
图中的三个错误,下面慢慢的讲。
先说说 ACC 吧。 ACC 是英文缩写,原文挺长,就不写了。 按照原文翻译过来,ACC 就称为:累加器。
有的教材就说了:ACC 是 CPU 中最繁忙的寄存器。 做各种运算之前,要在 ACC 中存入一个有待运算的数据,运算完成后,ACC 中,就有了运算结果。 因为它有这种功能,所以,它才叫做 “累加器”。
这说法,确实是没错的,大家也一定都听说过。
但是,在计算机专业的教材中,就滥用了 ACC !
书中(可参考上图)是把运算过程中的 “中间结果”,也送到了 ACC !
大家都知道:做除法时,要进行多次的相减。
每次相减的差,都送到 ACC ? 这是不可能的! ACC 不会这么忙的。
只有当运算结束时,商(以及余数),才会送到 ACC。
计算机专业的专家,编写教材时,就是这么能乱扯!
难道,它们还认为 ACC 不够繁忙?
以上,就是本文指出计算机专业教材的第一个错误。
在做而论道设计的除法电路(点击查看)中,就没有陷入计算机专家挖的坑。
在做而论道设计的电路中,减法电路算出的差,可以送到被减数的位置(去进行移位);也可以不送这个差,而是用原来不够减的被减数来移位。
做而论道是用 ALU 芯片构成减法器的。它的功能是:被减数-减数,得出借位以及差值。
两数相减时,够减了,借位就是 0,用这个 0 来控制,把差送过去(去进行移位)。
两数相减时,不够减,借位就是 1,这个 1,就能控制不送差。
这个差,在计算机专业的教材中,被称为:余数。
其实,只有在除法运算结束时,最后一次的差,才能叫做余数。 中间结果,哪能叫做余数? 这么叫,好像是脑回路短路了。 不过,既然专家它们都这么叫,咱们也就随着来吧。
不够减时的余数,当然就不能用来移位相减了。
因此,计算机专家就提出了一个说法,叫做:恢复余数。
但是,根据做而论道设计的电路可知,不够减时的余数,根本就没有保存。 因为这种余数,并不需要保存,你只要用原来的被减数进行移位,就完事大吉了。
既然这种余数,并不用保存,实际上也没有保存,当然,也就不必闲扯什么恢复了。
所以,计算机专家所说的 “恢复余数”,就是一个虚构的概念。
计算机专家又以此借题发挥,编造出来一大滩无用的垃圾 “知识” !
以上,就是本文指出计算机专业教材的第二个错误。
另外,商应该上 1 还是上 0 ?
这就是极其简单事儿了!
减法运算出现的借位,反一下相,就是商了。
根本就不是教材所说的 “计算机很傻,默认上 1,再改为 0”。
很傻的,不是计算机硬件电路,而是那些冒充内行来指导电路设计的专家。
以上,就是本文指出计算机专业教材的第三个错误。
这篇博文,早就写了,一直也不敢发表。
一旦发表,会伤到很多人的自尊心的。
今天斗胆,就发了吧。 如果有人不认同这些说法,可以留言讨论。
本文如有用词不当之处,做而论道先表示歉意了。
--本文完--