Advertisement

基于IEEE-754标准实现C/C++浮点数处理,并实现一个ftoa函数用于将浮点数转换为字符串

阅读量:

浮点数的存储格式

转载自 : http://www.cnblogs.com/dolphin0520/archive/2011/10/02/2198280.html

C/C++浮点数在内存中的存储方式

所有数据在内存中均以二进制形式进行存储,例如一个short型数值1156,其对应的二进制形式为00000100 10000100。在Intel CPU架构的系统中,该数据的存储顺序为10000100(低地址单元)和 00000100(高地址单元),这是由于Intel CPU采用的是小端模式。然而,关于浮点数在内存中的具体存储方式是怎样的?目前绝大多数C/C++编译器都遵循IEEE制定的标准浮点格式,即二进制科学表示法。

根据二进制科学表示法,S=M*2^N主要由三个部分组成:符号位、阶码(N)以及尾数(M)。对于float类型的数据而言,其二进制总共有32位,其中符号位占1位、阶码占8位、尾数占23位;而对于double类型的数据,则有64位的二进制长度,其中符号位仍为1位、阶码增加至11位、尾数扩展到52位。

31 30-23 22-0

float 符号位 阶码 尾数

63 62-52 51-9

double 符号位 阶码 尾数

符号位:当值为零时代表正数,当值为一时表示负数。

阶码:此处采用移码的方式进行表示。对于float类型数据而言,偏置量设定为127。由于

全部评论 (0)

还没有任何评论哟~