浮点数的二进制底层表示
同整数的二进制底层表示,浮点数也是2的幂的加权。
对于二进制比特串
[bm,bm−1...b2,b1,b0,b−1,b−2,b−3....b−n−1,b−n]
表示
float number=∑i=−nmbi∗2i
因为只能表示为2的幂的加权,所以这种表示形式就有很大的漏洞,那就是任何一个浮点数只能近似的表示。
早期各个计算机制造公司对于浮点数的底层解释不同,这就意味着移植性很差没有统一标准。为了方便,制定了IEEE Standard 754标准,现在的绝大部分机器都使用这种标准。
IEEE浮点数标准
IEEE浮点数标准使用32位bit表示单精度浮点数(float),64位bit表示双精度浮点数(double)。
它们在机器中表示如下 :
看图片我们可以知道,无论是单精度还是双精度,都分成了三个部分:
- sign : 符号位,sign为1表示负数,为0表示正数
- exponent : 单精度8位(23-30),双精度11位(52-62)。表示一个权重,是2的幂的加权形式。
- frac : n位frac编码尾数位M。尾数M是一个二进制的小数,它的范围是1 to 2−ϵ或者是0 to 1−ϵ
这里解释一下1−ϵ,对于小数1.0,假如说用6位比特来表示,那么最多只能表示到
一个给定的比特串,根据
Normalized Values(规范化数值)
这是最为常见的值。
当exp

本文介绍了浮点数在计算机中的二进制表示,包括IEEE 754标准,规范化数值、非规范化数值和特殊值的详细解释,以及浮点数的舍入规则和运算。内容涵盖了浮点数的符号位、阶码和尾数,以及在C语言中的浮点数处理。
最低0.47元/天 解锁文章
1242

被折叠的 条评论
为什么被折叠?



