指数位是切换时的主要焦点,因为您需要使用每种格式的不同偏差进行转换。所以看看你给出的例子:
FORMAT A 的偏差为 15,指数二进制值为 15 (01111),因此您采用二进制值 - 就像您试图获得 IEEE 值一样;因此,给你零。在计算 IEEE 值时,您的等式如下所示:
2^0 * 1.001。1.001 是小数位值的 1 倍。
现在我们转换为 FORMAT B。
格式 B 有 4 个指数位。因此,我们采用您的等式的指数 0 并使用 B 偏差来找到您的位串需要是什么。
位串值 - 偏差 = 等式中的指数。这就像在查找位串的 IEEE 值时查找指数一样。
位串值 = 0 + 偏差 = 0 + 7,因为 B 偏差为 7。
因此我们需要的位串值是 7:0111
结合我们目前得到的结果:0(符号位)、0111(指数位)、001(小数位)== 0 0111 001。
现在我们必须为 FORMAT B 获取长度为 4 的小数位串。我们有 001 并且需要在最后一位数字处添加一些位,因此我们有 001_ 形式的内容,其中 _ 表示添加的新位。由于您希望保持精度尽可能接近原始格式,因此您将其设为 0。永远不要将其设为 1,因为这会将您的小数位串更改为 2 倍,从而失去精度。
现在我们将它们组合在一起得到: 0 0111 0010 这是示例的最终答案。
因此,在不同格式之间进行转换时,您需要记住两个简单的准则:
如果您要添加位:3 --> 4 个小数位,则在末尾添加零以使位串具有您需要的长度。
如果您正在“删除”位:4 --> 3 个小数位,则最右边(最低有效)位将丢失。因此 0111 --> 011(1) 其中 (1) 是“已删除的位”。