zoukankan      html  css  js  c++  java
  • 我也要学C语言第七章:IEEE浮点数表示法

      之前呢,已经学习过无符号,有符号整数的表示(用补码),其实还有2个类型我没有说过,就是字符型和字符串型,主要我觉得这2种类型比较简单,看1会说就明白。字符型是用的阿斯卡码表示的,字符串型也一样,只是C的字符串呢,在结尾有个00。这个00就是判断字符串是否结束!引用字符串的变量其实就是代表字符串的首地址,然后呢依次检查下去,只要遇到了00就代表此字符串结束了。

    IEEE浮点表示法

      IEEE浮点数表示:符号位(1位) +     指数位置(8位)   +尾数位(23位)

      1:将要表示的浮点数转化为二进制表示。比如:

        123456.0f = 11110001001000000

      2:然后移动小数点到最高位只有1位的1。比如:

        1.1110001001000000 一共移动了16位

      3:因为小数点每向左移动一位就相等于以2为底的指数加1.所以:

        1.1110001001000000 * 2^16

      4:指数部分呢一共是需要8位,把十进制的指数转化为二进制时先加上127(为什么要加127是因为它把127当着0.因为移位不只是往一边移,8位中间点正是7F,7F就是十进制的127).例如:

        16+127=143 = 10001111

      5:12345.0f由于是正数,所以符号位为0.(注意:尾数位少了1个1,是因为最高位肯定是1,所以为了节约内存考虑)所以:

        符号位(1位) +     指数位置(8位)   +尾数位(23位)

                      0                   10001111             11100010010000000000000

         然后!再组合起来!01000111111100010010000000000000

      然后!再4位1组!!  0100 0111 1111 0001 0010 0000 0000 0000

      然后! 再转化成16进制   4     7       F      1        2      0      0      0

      然后!再组合起来!47F12000

      然后!再倒过来! 0020F147(为什么要倒过来是因为VC内存排列是高位对高位,低位对低位)

      然后!再进行检验!:

      这样!我们就知道调试浮点数的时候,为什么内存里面的内容怪怪的了!!!

  • 相关阅读:
    Nginx的启动、停止与重启
    用Java实现链表结构对象:单向无环链表
    java匿名内部类详解
    如何统计博客园的个人博客访问量
    Java 读写Properties配置文件
    java的枚举类型Enum解释
    接口测试框架1
    python几道简单的算法题
    很全的 Python 面试题
    有有面试
  • 原文地址:https://www.cnblogs.com/dodolook/p/2055720.html
Copyright © 2011-2022 走看看