如何用C语言定义IEEE754标准的浮点数

Python017

如何用C语言定义IEEE754标准的浮点数,第1张

C语言就是用IEEE 754标准

float 是 32 位 浮点数

double 是 64 位 浮点数

浮点数的字节内容可以用 union 破解:

union {

float x

unsigned char s[4]

} F32

F32.x = 1.23456

for (i=0i<4i++) printf("%x",F32.s[i])

16进制1位拉4位,得 2进制内容。

union {

double y

unsigned char t[8]

} F64

F64.y = 1.23456

for (i=0i<8i++) printf("%x",F64.t[i])

16进制1位拉4位,得 2进制内容。

c语言中单精度数和双精度数的本质区别在于数据类型所占的内存字节,浮点数,在C语言中使用的是IEEE754浮点数编码,该标准规定了单精度浮点数和双精度浮点数所占的内存字节,一般单精度数占用4个字节,双精度数占用8个字节,扩展双精度数占用80个字节。IEEE754具体的标准如下:

格式 长度 符号位 指数位 尾数位 有效位数 指数偏移 尾数说明

单精度 32 1 8 23 24127 有一位隐含位

双精度 64 1 11 52 53 1023 有一位隐含位

扩展双精度 80 1 15 64 64 16383 没有隐含位