CMP设计分享 http://blog.sciencenet.cn/u/accsys 没有逆向思维就没有科技原创。 不自信是科技创新的大敌。

博文

用机器如何进行正确计算

已有 3924 次阅读 2010-6-28 22:06 |个人分类:教学笔记|系统分类:科研笔记| 限位数, 机器计算, 加减法

姜咏江
 
我在“机器如何表示正负数和进行运算”中说过了:“机器是用限位数的加法来完成一定范围内的正负数加减运算的”。用机器设备在某一位置上能够方便地表达出N种状态,那么将这种机器设备n个排列起来,就可以制成n位能表示N进制无符号数的设备。例如只有3位的算盘,每一个位置都可以表示0~9这十个数码,合起来就能够表示000~999这1000个数,无论你怎样拨动算盘珠,也不会再出现新的数。用“对称制”,仍然是这1000个数,但可以表示的是-500~+499的正负数,这种值是我们“读”出来的,从机器表达形式来看与表示000~999没有区别。
 
限位数的总数有限的特性,使我们能够用它们的加法运算达到数值加减的目的,这是一般位数不受限制的表数方法所不能达到的。
 
限位数的加法运算的结果可能超出表示数值的范围,这叫溢出。作为对称制并不能根据限位数加法的最高位有进位来判断超出范围,而是根据“异号两数相加不溢出,同号两数相加结果变号才溢出”来判断的。例如 865+600的结果是465(最高进位1丢掉了),因为“对称制中500以上的限位数表示的是负数,否则是正数”,知两个表示负数的限位数相加的结果得到的限位数表示正数,显然错误。如果将865,600都保值扩充成4位,那么结果表示的值就不会溢出了。
 
限位数在对称制下保持数值扩充的方法是:正数高位添“0”,负值高位添最大数码。将865和600保值扩充成4位数,则865=9865=-135,600=9600=-400,那么865+600=9865+9600,这两个限位数相加的结果为9465(最高进位1丢掉了)是一个负数,它表示的值是-535,可见值的运算结果正确。
 
不细心研究限位数理论的人会感到奇妙,也可能不很理解。然而这是机器数值计算的真正方法,无论采用其他什么样的方式,都必将回归到限位数上来。
 
2010-6-28
 


https://wap.sciencenet.cn/blog-340399-339654.html

上一篇:简单问题却是机器计算的真道理
下一篇:如何快速读出机器数的正负值
收藏 IP: .*| 热度|

0

发表评论 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-22 13:56

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部