计算机中的定点数和浮点数

来源:互联网 发布:淘宝卖家如何退出村淘 编辑:程序博客网 时间:2024/05/04 11:04

计算机中数据有定点数和浮点数两种表达方式。

我们先来了解一下概念:

(1)定点数:小数点固定在某个位置上的数据。 就好像 0.0000001 ,0.0001111;

(2)浮点数:小数点位置可以浮动的数据。就像数学中的 1222.2*10^3也可以表示为1.2222*10^6;

提一下定点数的概念是主要是为了说明浮点数。

浮点数表达式:

N=M*R^E;

N为浮点数,M为尾数(mantissa),E也阶码(exponent),R为阶的基数,也就是底数啦,就像上面的10,不过咱们计算机里的底数不会是10的。

R通常是一个常数,一般是2、8、16。在一台计算机里,所有数据中的R是确定,且相同的。

浮点数在计算机内的形式:


Ms是符号位,被设置到最高位上。

E是阶码,有n+1位,一般为整数,其中E的最高位是E的符号位,用来表示阶数E的正负;

M是尾数,有m位。Ms与M组成一个定点小数。

在学习过程中我们会遇到规格化,这里解释一下啥是规格化,唔,就是科学计数法那样的表示方式,就像上面的1222.2*10^3表示为1.2222*10^6差不多,不过我们规格化后,小数点左边为符号位,尾数的其余部分都在小数点右边;这里我们应该就知道了 规格化并不会影响浮点数的值。

上面出现了一些莫名其妙的变量,如果不交代 一下好像有点不负责任。(了解的人,可以跳过了,有些啰嗦)

其实就是一些代数啦。

Ms 是符号位,非0即1,所以只占一位。

E 为n+1,其实的1就是E的符号位,n是E的尾数。

M的是m,就是除了符号位的尾数占的部分。

比如单精度浮点数(32位),阶码8位,尾数那就是24位咯(尾数中内含一位符号位);

比如双精度浮点数(64位),阶码11位,尾数那就是53位(一样)。

当一个浮点数的尾数是0了咋办,什么咋办,计算机当然看成0啦;

阶码的值超级小,小到机器能表示的最小值(我没遇到过),计算机也是当成0的,以上两种成为机器零。

IEEE754 国际标准规定了,基数为2,阶码采用移码,尾数采用原码。因为规格化原码的最高位恒为1,所以不在尾数中表示出来,计算时候再尾数的前面自动添加1。


原创粉丝点击