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

博文

机器如何表示正负数和进行运算

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

姜咏江
 
用机器来表示数既没有小数点,也没有正负号。由于机器位数的限制,那么直接表达数值的范围总是有限的。例如8位的二进制数只能表示0 ~ 255,或者-128~127。如果有减法运算存在,就只能表示-128 ~ 127,而不能作为无符号数处理。
 
试想一个10位的算盘,可以用10个位置表示10位的十进制数,无论将小数点的位置如何认定,就只能表示出1010个不同的数,不能再多了。如果我们将最高位认定为正负号,那么这一位的算盘珠只要一个就可以了,原因是正负号不能够参加加减运算。同样道理,有限位数的二进制数的最高位也不能认为是“符号位”,将符号混入加减数值运算的提法真是混沌,更叫人不能容忍的是这居然能够得到计算机界的承认!
 
用数码表示固定位数的数叫“限位数”。限位数直观来看就是一个无符号非负整数。要保证非负整数的特征,限位数只能做加法运算,而且运算的结果常常会超出范围。
 
算术运算是最基本的数值运算,其中乘除法运算可以用多次的加法运算和多次的减法运算代替。尽管如此,要进行数值计算,无论如何也离不开减法,自然就离不开负数如何用机器表示问题。
 
机器表示负数可不可以像手写那样给前面添加一个“-”号?强行加上去也可以,但在运算的时候,这一个“符号位”是不能够直接同数码一样进行运算的。一种巧妙的方法是利用限位数的个数有限性,按照限位数的大小对称地分成两部分(对称规则是两限位数的和是总个数),让表面上小的一部分限位数代表正数,而让较大的另一部分代表负数。相互对称的两个限位数叫“对码”。让较大部分的限位数代表其对码的相反数,这种用对码表示正负数的规定叫“对称制”。
 
在对称制之下,限位数表示的数值就不用“+-”来表示正负了。还可以通过限位数的加法运算完成它们所代表的数值加减运算。例如,3位的限位数共有1000个, 032的对码是1000-032=968,所以计算045-032时,用968表示-032就将减法运算变成了加法运算,因而045-032 = 045+968,由于3位表示的限制,最高进位丢失,故而限位数相加的结果是013,表示的值正是我们要计算的结果13。
 
这种求值运算的过程在机器里只能见到045、968和013,而没有“+-”符号,但一眼就可以知道限位数代表的数值是多少,方法是和对称点的数比较。因为3位十进制限位数的对称点是500,那么显然968是负数了。968的对码是032,根据对称制的规定,968代表的数值是-032。
 
用限位数加法运算替代数值的加减法运算方便了用机器进行,因为不论什么样的机器表达数的位数都是固定的,这是限位数运算的数值范围有限制的原因。
 
如何让机器计算能够突破数值范围的限制?下次再谈。
 
2010-6-24
 


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

上一篇:计算机核心设计中心必然转向中国
下一篇:理解有符号数和无符号数
收藏 IP: .*| 热度|

2 李世晋 intowin

发表评论 评论 (2 个评论)

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

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

GMT+8, 2024-12-22 14:24

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部