十定点数和浮点数.doc
文本预览下载声明
第二十三章? 定点数和浮点数
日常生活中,有各种各样的数,整数、分数、百分数等等,我们无时无刻不与这些数打交道。如:用加班2.75小时获得的1倍半的钱来买半匣鸡蛋需支付8.25%的销售税。许多人对诸如此类的数都感到很适应,并不需要怎么在行,即使在听到“平均每个美国家庭有2.6人”这样的统计数字的时候,也不会联想到2.6这个数字对人来说是不是要把人肢解了这样可怕的问题。
在计算机内存里,整数和分数的换算是常见的。存在计算机内存里的东西都是二进制位的形式,也就是说,都是二进制数。但有些数用位来表示比其他数用位来表示要容易一些。
我们使用位来表示数学上称为自然数而计算机编程人员称为正整型数的数,并介绍如何用2的补码来表示负整数,而这种方法很容易实现正数、负数的加法。下表列出了8位、16位、32位的正整数及它们的2的补码的范围:
数的位数正整数范围2的补码范围
80~255-128~127
160~65535-32768~32767
320~4294967295-2147483648~2147483647
要介绍的就是这些。除了整数以外,数学上还定义了有理数,它们可表示成两个整数的比,这个比也叫分数。例如,3/4是一个有理数,因为它是3与4的比。可以把这个数写成小数形式0.75,当写成小数时,它真正表示了分数,在此为75/100。
回忆一下第7章里的小数系统,在小数点左边的数字与10的整数次幂相关联;同样,在小数点右边的数字与10的负整数次幂相关联。第7章用42705.684作为例子,该数可以表示成与下面与之相等的形式:
???????????????? 4×10000+
??????????????? 2×1000+
??????????????? 7×100+
??????????????? 0×10+
??????????????? 5×1+
??????????????? 6÷10+
??????????????? 8÷100+
??????????????? 4÷1000
注意一下除号,可以把这个序列写成没有除号的形式:
??????????????? 4×10000+
??????????????? 2×1000+
??????????????? 7×100+
??????????????? 0×10+
??????????????? 5×1+
??????????????? 6×0.1+
??????????????? 8×0.01+
??????????????? 4×0.001
最后,可以用10的幂的形式表示如下:
有些分数并不容易用小数表示,常见的如1/3。如果用3去除1,可以得到:
??????????????????????????????????????????????????? 0.3333333333333333333333......
而永无止境。我们通常写成简洁形式,在3上面加一道横线来表示无限循环:
即使这样,把1/3写成小数也是有些笨拙的。它还是一个分数,因为它是两个整数的比。同样,1/7是:
??????????????????????????????????????????????? 0.142857142857142857......或
无理数则更不同,如2的平方根。无理数不能表示成两个整数的比,也就是说,小数部分是无穷的,没有重复规律或固定模式:
2的平方根是下面这个代数方程的根:
如果一个数不是以整数为系数的代数方程的根,则称为超越数(所有的超越数为无理数,但并不是所有的无理数都是超越数)。超越数包括p,它是圆的周长与直径的比,近似值为:
??????????????????????????????????????????? 3.1415926535897932846264338327950288419716939937511......
另一个超越数是е,它是下面表达式:
当n趋近于无穷大时的近似值:
??????????????????????????????????????????? 2.71828182845904523536028747135266249775724709369996...
到现在为止,谈到的所有数—有理数和无理数—统称为实数。这种定义用来与虚数相区分。虚数是负数的平方根,复数是由虚数和实数组成的。不管名称如何,虚数揭示了现实世界的奥秘,可以用来(例如)解决电子学的一些高级问题。
习惯上,我们把数看成是连续的。如果给出两个有理数,则可以找出一个数在这两个数中间。实际上,只需取平均值即可。但是,数字计算机不能处理连续事件。位不是0就是1,没有中间值。由于这一特性,数字计算机必须处理离散值。可以表示的离散值的个数直接与可达到的二进制位数相关。例如
显示全部