计算机组成原理第一版蓝色,[转载]计算机组成原理关于运算的几个算法

原码一位乘法,补码一位乘法还有补码不恢复除法这三种是老师要求掌握的,前提都是算定点小数。定点整数呢,通过移位就可以满足了,浮点数呢?规格化后,尾数不就是定点小数了吗,所以,掌握了定点小数的这几种运算别的也就可以实现了。

1先说原码一位乘法,假设被乘数和乘数都是5位(含符号位),符号位是单独拿出来算的,两个符号位进行异或运算,得到1,那结果的符号位就是1,得到0,结果的符号位就是0。然后是数值位的计算,这个过程和手工计算类似,先设定累加积为000000(我想,本来是四位,在这里却是设定的5位,应该是怕会有溢出吧)然后看乘数,从低位看到高位,要是最低位是1,就讲累加积加上被乘数,再把累加积和乘数一起右移一位,把乘数的最后一位移除去,然后再看剩下的最低位,再移动,一直到乘数的所有位都被移除,现在得到累加积是5位,加上原来存放乘数的四位,一共9位,低8位应该是结果的数值位,符号位已经算出来了,这样就得到的是要求结果的原码了。

2。补码一位乘法。这个算法是符号位也参与运算,根据前面老师推导出来的公式,累加积还是设为0.0000,这里没有多来一位,是因为补码不怕溢出吧,呵呵。然后存乘数那里应该变成乘数的符号位加数值位加0,然后看乘法最后一位减倒数第二位,要是0,就加上0.0000,然后一起右移,要是1,就加上【y】补,一起右移,要是-1,就加上【-y】补,再右移,一直到最后一次,只加不移了,最后留下多余的两位得到的累加积那里有5位,后面的六位有2位多余的,所以是4位,一共加上是9位,也是结果了,不过是补码,需要转化成真值,呵呵。

3

补码不恢复法除法这个是用双符号位的,其实一想,这三个好有意思啊,第一个是符号位单独算,第二个是单符号位,第三个是双符号位,这个也需要【+

-|y|】补。根据推理的结果,累加积先是设成被除数的,商先是设成全零。先是试,第一次加上【-|y|】补肯定是得到余数是负的,所以商0然后左移加【|Y|】补,要是余数是正的,那就要商1,左移再加上【-|y|】补,总是先得到这一次的余数,再得到这一次的商,再商和累加积一起左移,再加上该加的东西,就得到了下一次的余数,也就得到了下一次的商,如此一直到所有的商都被填满,最后一次的余数不移动了,就是最终的余数然后也就得到结果了。最后也需要加上符号位,因为刚开始都按绝对值算的,这真是霸气啊,对吧。余数和商都需要加上符号的。

前两个都是右移,后一个是左移,想象自己乘法和除法的时候,乘法都是算出来的就自然当低位了,除法呢,补上后边的,不就是相当于是左移了吗。其实也不需要死记硬背的是吧,都有一定的道理。

4浮点数的运算

这个,先要都化成规格化的形式吧,然后对阶,小的要向大的对,为什么呢?要是大的向小的对,那它的尾数一定是要左移啊,你说把高位的都移除去了,那就不是误差了,就成错误了,是吧。小的向大的对,就是小的的尾数右移,移除去的先保留,注意,先保留!然后对阶完成了,就该尾数之间的加减乘数什么的运算了,这就用到上面那几种了运算完了以后,还有规格化的问题。运算的时候,也是按照双符号位做的,要是最后得到的非规格化,那就左规,一直到满足规格化条件。尾数规格化时,阶码也是要加加减减的。要是溢出了,就是双符号位里的两个符号位不一样了,(也可以理解成是你不知道该用哪个符号位了,是吧)就右规,右规的结果是两个符号位一样了,你就不混乱了,哈哈。左规,右规都可能多次。然后呢?舍入,其实和四舍五入的原理是一样的,移除的是0,就不要了,要是移除的是1,那就在最后位补1,可以理解吧,这叫0舍1入法,还有就是,不管怎么右移,总要在最后一位设为1,这叫恒置1法,其实误差都不大。在舍入的过程中,就会用到移除去的那个保留的!那会说了保留。看移除去的最高位。最后看看阶码溢出判断就可以了,呵呵。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值