所以练习说:“考虑16位实数的二进制编码。填写数字-0.625的二进制编码的空点,知道”1110“代表曝光,并且减1”-1“< / p>
_ 1110_ _ _ _ _ _ _ _ _ _ _ "
我找不到答案,我知道这不是一项艰苦的练习(至少看起来不是很难)。
答案 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 ...
好的小谈话可以转换你的号码作为例子来展示转换过程:
-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