计算机基础原理 浮点数
计算机基础原理 浮点数
在多数编程语言中,浮点数分float(单浮点数),double(双浮点数)
-
float占用4字节空间,也就是32位,其中由1位符号位,8位阶码位,23位尾数位组成。 -
double占用8字节空间,也就是64位,其中由1位符号位,11位阶码位,52位尾数位组成
如下图

举三个例子说明小数在单浮点数中如何表示
| 例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
$$
本文来自博客园,作者:勤匠,转载请注明原文链接:https://www.cnblogs.com/JarryShu/articles/18824246

浙公网安备 33010602011771号