原文地址对浮点数的一些理解
前言
相比int等整型,float等浮点类型的表示和存储较为复杂,但它又是一个无法回避的话题,那么就有必要对浮点一探究竟了。在计算机中,一般用IEEE浮点近似表示任意一个实数,那么它实际上又是如何表示的呢?
IEEE浮点表示
IEEE浮点标准用
的形式近似表示一个数。并且将浮点数的位表示划分为三个字段:
-
符号(sign)s决定这个数是负数(s=1)还是正数(s=0)。可以用一个单独的符号s直接编码符号s。
-
尾数(signficand)M是一个二进制小数,它的范围是1~2-ξ或者是0~1-ξ。
n位小数字段编码尾数M。
-
阶码(exponent)E的作用是对浮点数加权,这个权重是2的E次幂(可能是负数)。k位的阶码字段
编码阶码E。
在单精度浮点格式(c语言的float)中,s,exp和frac字段分别为1位,8位和23位,而双精度浮点格式(c语言中的double)中,s,exp和frac字段分别为1位,