Double型数据的存储方式是什么?
目前C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算。这种结构是一种科学计数法,用符号、指数和尾数来表示,底数定为2——即把一个浮点数表示为尾数乘以2的指数次方再添上符号。下面是具体的规格:
符号位 阶码 尾数 长度
float 1 8 23 32
double 1 11 52 64
这里的阶码是无符号的,但是实际上阶码是有符号的,所以要把实际的指数加2^7-1或2^10-1。例如2的double型阶码就是100 0000 0000。
尾数是把数据用科学计算法表示,并且小数点前只有一位,存时把小数点前的1去掉。
例如3的二进制是1.1*2^1,所以,double浮点数就是0x4008 0000 0000 0000。
而有的小数的二进制数是无穷的,这就是浮点数的精度。
5.3的浮点数:
5是101,0.3是0.010011001100110011001100110011001100110011…
整体就是1.010100110011001100110011001100110011…*2^2,
故浮点数为4015 33333333 3333。