计算机组成原理--计算机中的除法运算

  在进行除法运算时,也就是多次进行:移位、相减、移位、相减 ... 。
  移位,可以是 “被除数左移”,也可以是 “除数右移”。
  相减,大家都会做。

  人工做减法时,如果够减则减,商上 1;如果不够减就不减,商则上 0。
  由计算机计算时,当然就得先减一遍了,减完之后才能发现够减不够减。
  在不够减时产生的差(计算机专业称之为余数),显然是不能用的。
  所以,计算机专家就想出来 “恢复余数” 的补救方法。
  计算机专家的想法是:先保存这个不够减的余数,再将其加上除数,恢复到原来的被除数之后,再进行移位。
  这两种除法的竖式,列出如下。

  其实,人工做除法的算法,在计算机中,也是可以实现的。
  虽然,计算机做不到 “不够减就不减”。
  但是,计算机可以做到【不够减就不保存差(即余数)】。

  就是说:当发现不够减时,这个余数,就不保存了。接着就用原来的被除数左移即可!
  做而论道在前面的博文中,已经给出了两种电路,都可以按照人工算法来完成除法运算。 两个电路的简图如下所示。

  左图,是采用循环方式完成除法的电路,其工作原理可见点击查看
  右图是采用减法器阵列完成除法的电路,其工作原理可见点击查看
  上述两图所用到的二进制的位数都不多,所以,只能作为参考之用。 按照上面两图的思路,做而论道还分别设计了两种 16 位数除以 8 位数的电路,这就有点接近实用了。 经过仿真运行,这两种电路都能圆满的完成无符号数除法运算。运算结果,百分之百都是正确的。

  上述两图的设计思路,都是符合 “人工做除法” 的方法与步骤的。 这个思路并不难,也可以说是极其简单,设计集成电路的技术员,也一定会掌握的。 那么,他们就可以轻而易举的,在 CPU 中,设计出同类的电路。
  
因此,就可以说,在计算机中,根本就不会出现 “不够减的余数”。 那么,计算机专家所编造的 “恢复余数法、不恢复余数法”,这不就是白忙活了吗! 所谓的 “加减交错法”,也是白费心思了。 的的确确,这种余数,根本就不会存在,由此编造的各种理论与方法,根本就没有立足之地!

  除了这种荒谬的 “恢复余数” 说法之外,计算机教材中,还有一些不当之处,值得说说。

  大家都知道,计算机中只有 1 和 0,并没有小数点。 用 1 和 0,只能组成二进制的整数。 因此,计算机中的各种计算,都只能是针对整数进行。 各种运算结果,也百分之百都是整数。 
  当然,用这些二进制整数,可以代表:整数、小数、甚至浮点数。
  再扩展一下:英文汉字声音图像各种外设的控制信号各种外设的状态信息 ... 。 这些,也都是可以用二进制数代表的。
  虽然,可以说是包罗万象了,但是,在计算机内部的各种运算,必须,也只能是对二进制整数进行操作。
  
说到这里,就发现一些奇怪的事了:计算机教材中,许多运算,都写上了小数点!
  他们写的这种数字,在计算机中,显然都是不存在的。 
  那么,计算机专业的教材,为什么不按照计算机的特点来教学?
  难道,他们写的这些,不是讲我们现在用的计算机?
  脱离实际,这课本,就没什么看头了。

  另外还有一个问题。
  做除法 ( X / Y ) 时,被除数 X 的位数,最好是除数 Y 的二倍。 这样才能得到合适位数的商。
  但是,在许多计算机教材的除法例题中,被除数、除数,两者的位数,竟然都是相同的!
  然后,在相除的过程中,又在被除数后面,无根无据的添上几个零!

  然后,又毫无理由的说,添零的个数,与除数的位数相同,即可。

  既然可以添零,你就应该继续添啊,为什么就不添了?
  关键问题是:添上几个零之后,被除数,显然就不是题目中原来给定的数值 X 了,而是 X0000 了。 由此求出的商和余数,也就不知道是什么东西了!
  可以肯定的说:计算机教材中的例题,所求得的商 Q,并不是【X / Y】!
  而是:【X0000 / Y】。

  另外,还有一个问题。
  计算机教材所讲的乘除运算,都是针对原码或补码进行的。
  由此,只能设计出来【带符号数】乘法器或除法器的电路。
  这种电路,能不能对【无符号数】进行同样位数的乘除运算呢?
  实际上,这是做不到的。
  为什么做不到?
  还是等介绍完了乘法电路再说吧。


--本文完--

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值