二进制的负浮点数

时间:2016-08-29 07:21:57

标签: binary floating-point negative-number

所以练习说:“考虑16位实数的二进制编码。填写数字-0.625的二进制编码的空点,知道”1110“代表曝光,并且减1”-1“< / p>

                _ 1110_ _ _ _ _ _ _ _ _ _ _                              "

我找不到答案,我知道这不是一项艰苦的练习(至少看起来不是很难)。

3 个答案:

答案 0 :(得分:2)

让我们暂时忽略这个符号,并将值0.625分解为2的(负)幂:

0.625(dec) = 5 * 0.125 = 5 * 1/8 = 0.101(bin) * 2^0

这应该归一化(值向左移动,直到小数点前有一个,并相应地调整指数),因此它变为

0.625(dec) = 1.01(bin) * 2^-1 (or 1.25 * 0.5)

隐藏位

假设你有一个隐藏的比特场景(意味着,对于规范化的值,最高位总是1,所以它不存储),这变为.01在右边用零比特填充,所以你获得

sign = 1                        -- 1 bit
exponent = 1110                 -- 4 bits
significand = 0100 0000 000     -- 11 bits

所以这些位是:

1 1110 01000000000

分组不同:

1111 0010 0000 0000(bin) or F200(hex)

没有隐藏位(即存储最高位)

如果没有隐藏位方案,则变为

1 1110 10100000000

1111 0101 0000 0000(bin) = F500(hex)

答案 1 :(得分:0)

IEEE 754标准将binary16指定为具有以下格式:

Sign bit: 1 bit
Exponent width: 5 bits
Significand precision: 11 bits (10 explicitly stored)

公式= exp(-1, signbit) x exp(2, exponent-15) x (1.significantbits)

解决方案如下,

-0.625 = -1 x 0.5 x 1.25
significant bits = 25 = 11001
exponent = 14 = 01110
signbit = 1
ans = (1)(01110)(0000011001)

答案 2 :(得分:0)

首先,您需要了解每个数字“z”可以用

表示
  

z = m * b ^ e

m =尾数,b =偏差,e =指数

所以-0.625可以表示为:

  

-0.625 * 10 ^ 0
  -6,25 * 10 ^ -1
  -62,5 * 10 ^ -2
  -0,0625 * 10 ^ 1

通过IEEE转换,我们的目标是标准化的浮点数,这意味着逗号之前只有一个前面的数字( - 6 ,25 * 10 ^ -1)

在二进制文件中,逗号前的单个数字始终为1,因此不会存储此数字。

您将转换为16位浮点数,因此您拥有:

  

1位符号5位指数10位尾数== 16位

由于指数可以是负数和正数(如上所述,这仅取决于逗号移位),因此他们提出了所谓的偏差。对于5位,偏差值为01 111 == 15(dez),其中14个为1 ^ -1和16个为^ 1 ...

好的小谈话可以转换你的号码作为例子来展示转换过程:

  1. 始终将小数点前位置转换为二进制
  2. 如果结果大于1,则将小数位乘以2,减去1,如果小于0则标记为1,标记为0。 继续此步骤,直到结果为== 0,或者您已经记下了与尾数一样多的数字
  3. 将逗号移动到只有一个前十进制数并计算移位数。如果向左移动,则向偏移添加计数,如果必须向右移动,则从偏差中减去计数。这是你的指数
  4. 确定你的标志并将所有部分加在一起
  5.   

    -0.625
      1. 0到二进制== 0

      2.
    0.625 * 2 = 1.25 ==&gt; -1
       0.25 * 2 = 0.5 ==&gt; 0
       0.5 * 2 = 1 ==&gt; -1
      中止
      
      因此,中间结果是-0.101
      将逗号向右移1次以获得标准化的浮点数:
      -1.01
      exponent = bias +( - 1)== 15 - 1 == 14(dez)== 01110(bin)
      
      4.将零件放在一起,符号= 1(负),(并记住我们不存储数字的前导1)
      
      1 01110 01
      因为我们在尾数计算期间中止,所以用0:
    填充其余的位   1 01110 01 000 000 00