您现在的位置是:首页 >

为什么电子计算机要把数表示为二进制浮点数

火烧 2016-12-08 03:03:22 1116
我们在日常生活中遇到的许多数,它们有一个共同的特点,就是小数点的位置都是固定的。例如,圆周率π=3.1416,它的小数点固定在3与1之间。=1.7321,它的小数点固定在1与7之间。光在真空中传播的速度C=299792.4562公里/秒,它的小数点固定在2

我们在日常生活中遇到的许多数,它们有一个共同的特点,就是小数点的位置都是固定的。例如,圆周率π=3.1416,它的小数点固定在3与1之间。=1.7321,它的小数点固定在1与7之间。光在真空中传播的速度C=299792.4562公里/秒,它的小数点固定在2与4之间。这种小数点具有固定位置的作用,我们就称为定点数。

为方便起见,光的速度可以近似地取为300000公里/秒,或写成3×105公里/秒,也就是说,把原来的数写成一个数再乘上一个10的乘幂的形式。当然,我们还可以把原来的数写成一个10的乘幂乘上一个纯小数的形式,例如106×0.3、108×0.003等等,这些数的小数点是浮动的,但它们都表示同一个数。又例如,-32.147可以写成-10+2×0.32147或-10+3×0.032147等等。-0.0027可以写成-10-2×0.27或-10-1×0.027等等。

一般地,任何一个十进制数,都可以表示成下列形式的浮点数:

紧靠等号的“±”表示X(二)的正负号,称为数符。p称为阶数,它是十进制表示的零和正整数。p前面的“±”表示阶数的正负号,称为阶符。q称为尾数,它是十进制表示的零和正小数,即

0≤q<l。

根据这一规定,我们只讨论尾数是纯小数的浮点数,例如,-10+2×0.32147、+10-2×0.27、-lO+3×0.032147、+10-1×0.027等等,而不讨论-10+1×3.2147、+10-4×27等形式的数。虽然这样,当我们把一个十进制数化成浮点数时,结果并不是唯一的。如果我们要求

≤q<1。

即要求尾数的第一位小数不为零时,那么,一个十进制数就能化成唯一确定的浮点数,这个数就称为十进制浮点规格化数。例如,-10+2×0.32147就是浮点规格化数,而-10+3×0.032147、-10+4×0.0032147等都是浮点非规格化数。因为它们尾数的第一位小数是零。

同理,二进制数0.0011(二)可以写成2-1×0.011(二)或2-10×0.11(二),等,-llOl.Oll(二)可以写成-2+100×0.1101011(二)或-2+101×0.01101011(二)等。

一般地,任何一个二进制数都可以表示成下列形式的浮点数:


紧靠等号的“±”表示x(二)的正负号,称为数符。阶数p是二进制表示的零和正整数。P前面的“±”表示阶数的正负号,称为阶符。尾数q是二进制表示的零和正小数,即

0≤q<1。

如果我们要求

≤q<1,

即要求尾数的第一位小数不为零时,那么,一个二进制数就能化成唯一确定的浮点数,这个数就称为二进制浮点规格化数。例如,-2+10×0.1001就是一个浮点规格化数,而-2+11×0.01001或-2+100×0.001001等都是浮点非规格化数。因为它们尾数的第一位小数是零。

有了上面的准备,我们就可以来讨论,为什么电子计算机要求把参与运算的数表示为二进制的浮点规格化数的形式了。

参与运算的各个数,存放在计算机的存贮器各个单元里,各个单元由许多小元件构成,单元里的小元件个数就是这个单元的长度,称作“字长”。不同的计算机,字长也往往不同,有的16位,有的42位、48位,等等。

假使有一个单元的字长为10位,可以把第10位(自左至右)定作数的符号位(用0代表正,1代表负),又规定小数点在第9、10位之间。这样,一个单元里所表示的二进制定点数x(二)=±0.S1S2S3……S9,形式就是

容易看出,这个单元所能表示的二进制定点数的范围是

-0.111111111≤x(二)<0.111111111。

由此可见,对于字长是10位的计算机单元,只能表示具有9个二进制数字的小数。

为了扩大一个单元所能表示的数的范围,我们可以将字长为10位的单元来表示一个浮点规格化数。例如把第10位定为阶符(0代表正,1代表负),第9、8、7位定为阶数p1p2p3,第6位为数符,第5~1位为尾数的各位数字。那么,二进制浮点规格数x(二)=±2±p1p2p3·0.q1q2q3q4q5在单元中的形式是

它能表示的最大绝对值为2111·0.11111(二)=2(1-2-5)(+),最小绝对值为2-111·0.10000(二)=2-7·0.5(+)

由此可见,对同样字长的计算机,用浮点数表示的数值范围比用定点数表示的数值范围大得多。电子计算机要算的题目,数值范围往往很大,特别是科学计算、天文计算等等,如果用定点数,计算机的字长就要很长,这样,计算机的设备就要很庞大,这不但不经济,而且也影响可靠性。所以,通用电子计算机往往采用浮点数。

永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码