是否可以仅使用 7 位将 -3/32 表示为二进制浮点值

问题描述 投票:0回答:1

假设浮点表示仅限 7 位:1 个符号位、3 个指数位和 3 个小数位。

首先我将

3/32
转换为二进制
0.00011
,
然后是标准科学计数法
1.1 * 2^(-4)

此时我意识到我的指数字段将是

-1
,这是无效的。
我尝试将
3/32
表示为
0.11 * 2^(-3)
,这样可以更直观地表示
1 000 110

但是,显然这是一个非规范化值,如果我尝试将表示形式转换回十进制,我会得到
-3/16

我的问题是:是否有可能在问题的约束范围内精确地表示这个值?
看起来这个方案的最小可表示值是

-15
,所以
-3/32
落在这个区间内。
我知道转换期间会丢失位并丢失精度;这里是这样吗?

floating-point binary
1个回答
0
投票

使用 1 个符号、3 个指数和 3 个有效位,遵循 IEEE 规则,以下是可以表示的最小有限值:

Bits       |   Decimal Value
-----------+----------------
0b0000000  | 0
0b0000001  | 0.0312
0b0000010  | 0.0625
0b0000011  | 0.0938

您要查找的值

3/32
等于
0.09375
。从上表可以看出,它并不能完全代表。对于通常的最接近偶数舍入,最好的选择是将其表示为位模式
0b0000011
,误差为
0.00005

最接近值的精确表示是:

  ENCODED = 0.0938 :: FloatingPoint 3 4
                  6 543 210
                  S E3- S3-
   Binary layout: 0 000 011
      Hex layout: 03
       Precision: 3 exponent bits, 3 significand bits
            Sign: Positive
        Exponent: -2 (Subnormal, with fixed exponent value. Stored: 0, Bias: 3)
  Classification: FP_SUBNORMAL
          Binary: 0b1.1p-4
           Octal: 0o6p-6
         Decimal: 0.0938
             Hex: 0x1.8p-4
© www.soinside.com 2019 - 2024. All rights reserved.