📓 Archive

  • Pricing
  • Chess
  • Syntax
  • NUMERATION

    FGJ: Create:2024/10/23 Update: (2026-01-19)

    • Intro(System of numeration) #

      • 补码

      • 进制转换图 #

      • 浮点数 #

        按照 IEEE 754 浮点数标准,一般会以四个字节来保存,布局结构图如下:



        在谈论计算保存字节值之前先了解一下科学计数法:
        在十进制中: \(12302 = 1.2302 * 10^4\)\( 0.00123 = 1.23 * 10^{-3}\)
        在二进制中: \(11000 = 1.1 * 2^4\)\( 0.0101 = 1.01 * 2^{-2}\)

        将 9.625 这个数改成 IEEE 754 标准的机器数步骤如下:
        1. 确定符号位,正数,所以为 0。
        2. 将十进制转换为二进制:

        3. 科学计数法规范化:\(1001.101 = 1.001101 * 2^3\)
        4. 由步骤 3 可知,exponent = 3。而 IEEE 754 单精度格式使用偏置值 127 来表示指数,所以加上偏置值 \(3 + 127 = 130 = 10000010\)
        5. 组合起来就是: \(0\space 10000010_8\space 00110100000000000000000_{23}\)

        Java 代码验证:

        • 精度丢失过程 #

          1. 先将 16777216 转化为二进制表示: 1 00000000 00000000 00000000
          2. 将二进制写成科学计数法:\(1.0 * 2^{24}\)
          3. 计算 exponent : 24 + 127 = 10010111,外加位数 23 个 0。
          4. 综上:0 10010111 0000000 00000000 00000000
          1. 先将 16777217 转化为二进制表示: 1 00000000 00000000 00000001
          2. 将二进制写成科学计数法:\(1.00000000 \hspace{0.5em} 00000000 \hspace{0.5em} 00000001 * 2^{24}\)
          3. 计算 exponent : 24 + 127 = 10010111,只有23位,只能把最后的1截断,相当于加23个0。
          4. 综上:0 10010111 0000000 00000000 00000000

    • Reference #


    comments powered by Disqus