zoukankan      html  css  js  c++  java
  • 关于浮点数存储格式标准

    浮点数存储标准为:IEEE754。

    一、定义:什么是IEEE754

    浮点数在C/C++中对应float和double类型,我们有必要知道浮点数在计算机中实际存储的内容。IEEE754标准中规定float单精度浮点数在机器中表示用 1 位表示数字的符号,用 8 位来表示指数,用23 位来表示尾数,即小数部分。

    对于double双精度浮点数,用 1 位表示符号,用 11 位表示指数,52 位表示尾数,其中指数域称为阶码。

    IEEE754规定:单精度浮点数字长32位,尾数长度23,指数长度8,指数偏移量127;

    双精度浮点数字长64位,尾数长度52,指数长度11,指数偏移量1023;约定小数点左边隐含有一位,通常这位数是1,所以上述单精度尾数长度实际为24(默认省略小数点左边的1则为23),双精度尾数长度实际为53(默认省略小数点左边的1则问53);

    下面讲述使用IEEE754标准表示浮点数:176.0625表示为单精度浮点数:

    解:1).先将176.0625转换为二进制数小数点前:

    176 / 2 = 88  余数为 0

    88 / 2=44 余数为 0                            

    44 / 2 =22 余数为 0                      

    22 / 2= 11 余数为 0                             

    11 / 2 =5   余数为 1       

    5 / 2=2 余数为 1                            

    2/ 2  =1 余数为 0                                                                            

    1/ 2=0        余数为 1    商为0,结束。                                                                      

    小数点前整数转换为二进制:10110000                                            

    小数点后:小数部分乘以2,取整数部分,直至乘积小数部分为0  

    0.0625 * 2 = 0.125   整数为0                

    0.125 * 2 = 0.25     整数为0            

    0.25* 2 = 0.50       整数为0            

    0.5* 2 = 1.0 整数为1,小数部分为0,

    结束小数点后的小数位转换为二进制:0001     

    故176.0625转换为二进制为:10110000.00012).

    IEEE754约定小数点左边隐含有一位,通常这位数是1,所以10110000.0001=1.01100000001 *  2^7(小数点向左偏移7位);

    IEEE754约定单精度指数偏移量为127,所以176.0625使用IEEE754标准表示时,指数偏移量为 7+127=134 ,即:10000110

    IEEE754约定单精度尾数长度为23,所以176.0625使用IEEE754标准表示时,尾数为:01100000001000000000000176.0625>0,即为整数,所以符号位为0

    由上得出:176.0625使用IEEE754规格化后的表示为:0  10000110 01100000001000000000000

  • 相关阅读:
    字符串的排列
    二叉搜索树与双向链表
    复杂链表的复制
    二叉树中和为某一值的路径
    二叉搜索树的后序遍历序列
    从上往下打印二叉树
    python系统编程(一)
    python网络编程(十三)
    python网络编程(十二)
    python网络编程(十一)
  • 原文地址:https://www.cnblogs.com/litifeng/p/10462679.html
Copyright © 2011-2022 走看看