2016-02-28 62 views
2

在我的计算机体系结构课程中,我们使用14位二进制模型(1位为符号,5位为指数,8位为尾数)。当输入指数时,我的指导员让我们加16来抵消它(偏差16)为什么我们使用16偏差?是否因为5位只能表示多达31个数字?如果是这样,请详细说明并比较使用指数时使用127偏差的IEEE单精度。最后,如果有人能够给我一个关于这方面和二进制使用的偏见的明确定义,我将不胜感激。如果我说的内容不清楚,请发表评论。为什么教科书中使用的二进制十四位浮点模型使用偏差16,因为IEEE单精度使用偏差127?

+0

任意选择,没有参照的指数偏压使得IEEE漂浮可比作为符号/幅值的整数。这对CPU内部可能是有用的,所以他们可以重用他们的比较硬件的浮点数。这对于像['nextafterf'](http://en.cppreference.com/w/c/numeric/math/nextafter)之类的float bithack函数也很有用。 –

回答

3

IEEE 754二进制浮点格式遵循指数偏差的简单模式。当指数为p位时,偏差为2^{p-1}-1。这个指数具有相同数量的正负指数。

对于单精度浮标p为8,因此偏差为127.对于您的格式p为5且偏差为15.也许您的导师将偏差改为16,因为格式不支持denorm,infinity和NaN 。

3

表示一系列数字的方法有多种,包括正数和负数。增加偏差特别灵活。范围[-n, m)可以通过将n添加到每个数字来表示,将其映射到范围[0, m+n)

该系统用于我已经使用的所有浮点系统中的指数。它简化了一些比较,因为非符号位的更大的无符号二进制值表示浮点的更大绝对量值,除了特殊值(例如NaN)。

对于浮点型指数,偏差大约是指数范围的一半,因此大约一半的值位于零的每一边。精确的平衡是不可能的,因为有偶数个位模式,并且一个用于零。

正如在another answer中讨论的那样,IEEE754标准对5位指数使用15的偏差。

有选购16几个可能的原因:

  • 有一些实际的技术原因,如不治疗31专项的建议之一。
  • 偏差16使得1.0的表示特别简单,只有一个非零位。
  • 与IEEE 754略有不同有助于说服学生浮点并不意味着IEEE 754.还有其他浮点格式。
  • 与IEEE 754略有不同可能会阻止使用现有工具来获得练习结果而不理解表示如何工作。
  • 它是为指数偏置合理值中的一个,以IEEE 754