8.5.4 按二进制输出float类型数据
float类型的存储格式并不是C语言规定的,而是由ISO/IEEE Std 753-1985标准规定的。许多CPU都遵守这个标准,但必须明确的是这并不是C语言的特别要求,因为在这个标准之前,C语言就已经存在了。本小节所讨论的只是一种C语言中支持的ISO/IEEE Std 753-1985标准的float类型,这是一种很普遍的情形。
粗略地说,在ISO/IEEE Std 753-1985标准中,float浮点数首先要化成下面的形式
在存储时,用1位表示浮点数的正负号(s),8位存储浮点数的指数部分加上127的结果(e+127),其余23位记录浮点数的尾数(f2~f24,f1不存,但要求必须为1)。这样总共需要32bit存储一个float数据。
通过位段可以很容易地取出float浮点数的各个组成部分。
程序代码8-15/*
题目:输出float数据的二进制格式
*/
#include
#include
//建立一个union类型
//把float数据分解为3个部分
union fljg{
float fl;
struct { unsigned ws:23;
//尾数
unsigned zs:8 ;
//指数+127
sign