浮点数的二进制表示
基础知识: 十进制转十六进制; 十六进制转二进制; IEEE 制定的 浮点数 表示规则; 了解: 眼下 C/C++ 编译器标准都遵照 IEEE 制定的浮点数表示法来进行 float,double 运算。这样的结构是一种科学计数法,用符号、指数和尾数来表示,底数定为 2—— 即把一个浮点数表示为尾数乘以 2 的指数次方再添上符号。以下是详细的规格: 符号位 阶码 尾数 长度 float 1 8 23 32 double 1 11 52 64 下面通过几个样例解说浮点数怎样转换为二进制数 例一: 已知: double 类型 38414.4 。 求:其相应的二进制表示。 分析: double 类型共计 64 位,折合 8 字节。由最高到最低位各自是第 63 、 62 、 61 、 …… 、 0 位: 最高位 63 位是符号位, 1 表示该数为负, 0 表示该数为正; 62-52 位,一共 11 位是指数位; 51-0 位,一共 52 位是尾数位。 步骤:依照 IEEE 浮点数表示法,以下先把 38414.4 转换为十六进制数。 把整数部和小数部分开处理 : 整数部直接化十六进制: 960E 。小数的处理 : 0.4=0.5*0+0.25*1+0.125*1+0.0625*0+…… 实际上这永远算不完!这就是著名的浮点数精度问题。所以直到加上前面的整数部分算够 53 位即可了。隐藏位技术: