计算机基础原理 浮点数

计算机基础原理 浮点数

在多数编程语言中,浮点数分float(单浮点数),double(双浮点数)

  • float 占用4字节空间,也就是32位,其中由1位符号位,8位阶码位,23位尾数位组成。

  • double 占用8字节空间,也就是64位,其中由1位符号位,11位阶码位,52位尾数位组成

如下图

image

举三个例子说明小数在单浮点数中如何表示

例1 例2 例3
1.25转float表示
1.25转二进制表示为1.01
1.01用二进制的科学计数法为1.01 × 2^0(指数即阶码,这里的指数为0)
float的阶码偏移量为127( 111 1111B),用阶码加127等于127
注意:偏移量为2^n-1
1.01的尾数部分为.01,尾数部分剩余位数直接填充0即可
7.5转float表示
7.5转二进制表示为111.1
111.1用二进制科学计数法为1.111 × 2^2(指数即阶码,这里的指数为2)
用阶码加127等于129,129用二进制表示为1000 0001
1.111的尾数部分.111,尾数部分剩余位数填充0
-24.125转floa表示
-24.125转二进制表示为-11000.001
11000.001用二进制科学计数法为-1.1000001 × 2^4(指数即阶码,这里的指数为4)
用阶码加127等于131,131用二进制表示为10000011
1.1000001的尾数部分.100 0001,尾数部分剩余位数填充0
结果:0 0111 1111 010 0000 0000 0000 0000 0000 结果:0 1000 0001 111 0000 0000 0000 0000 0000 结果 1 1000 0011 100 00010000 0000 0000 0000

举三个例子说明小数在双浮点数中如何表示

例1 例2 例3
1.25转double表示
1.25转二进制表示为1.01
1.01用二进制的科学计数法为1.01 × 2^0(指数即阶码,这里的指数为0)
double的阶码偏移量为1023( 11 1111 1111B),用阶码0加1023等于1023
注意:偏移量为2^n-1
1.01的尾数部分为.01,尾数部分剩余位数直接填充0即可
7.5转double表示
7.5转二进制表示为111.1
111.1用二进制科学计数法为1.111 × 2^2(指数即阶码,这里的指数为2)
用阶码2加1023等于1025,1025用二进制表示为1000 0000 001
1.111的尾数部分.111,尾数部分剩余位数填充0
-24.125转double表示
-24.125转二进制表示为-11000.001
11000.001用二进制科学计数法为-1.1000001 × 2^4(指数即阶码,这里的指数为4)
用阶码4加1023等于1027,1027用二进制表示为1000 0000 011
1.1000 001的尾数部分.1000 001,尾数部分剩余位数填充0
结果:0 011 1111 1111 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 结果:0 100 0000 0001 1110 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 结果 1 1000 0000 011 1000 0010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

拓展

为什么float的偏移量是127,double的偏移量是1023 ?

因为在 IEEE 754 标准中,偏移量的计算公式为
$$
偏移量 = 2 ^ {阶码位数 - 1} - 1
$$

posted @ 2025-04-14 10:11  勤匠  阅读(129)  评论(0)    收藏  举报