在我的计算机体系结构课程中,我们使用14位二进制模型(1位为符号,5位为指数,8位为尾数)。当输入指数时,我的指导员让我们加16来抵消它(偏差16)为什么我们使用16偏差?是否因为5位只能表示多达31个数字?如果是这样,请详细说明并比较使用指数时使用127偏差的IEEE单精度。最后,如果有人能够给我一个关于这方面和二进制使用的偏见的明确定义,我将不胜感激。如果我说的内容不清楚,请发表评论。为什么教科书中使用的二进制十四位浮点模型使用偏差16,因为IEEE单精度使用偏差127?
2
A
回答
3
IEEE 754二进制浮点格式遵循指数偏差的简单模式。当指数为p
位时,偏差为。这个指数具有相同数量的正负指数。
对于单精度浮标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
相关问题
- 1. IEEE浮点数,如何计算偏差
- 2. 什么是浮点数的“偏差值”?
- 3. 获取浮点型IEEE单精度位
- 4. LIMIT使用偏移误差
- 5. 浮点尾数偏差
- 6. 浮点运算=从十二进制到二进制最差的精度/差异是多少?
- 7. 浮点数表示中的偏差值
- 8. 将IEEE浮点十六进制转换为十进制?
- 9. 十六进制浮点数IEEE 754双精度C++
- 10. 什么是单精度32位IEEE 754浮点?
- 11. Ruby将64位IEEE 754十六进制转换为双精度
- 12. 在Java中获得(十进制)浮点数的IEEE 754(单精度)表示法
- 13. 使用Java计算标准偏差?
- 14. 嵌套表格不使用偏差
- 15. 试图使用标准偏差java
- 16. 浮点:IEEE为主,但位值的二进制
- 17. 为什么使用十六进制?
- 18. 为什么十进制数16 == 5的二进制表示中的位数?
- 19. 使用16位将十进制数转换为2的补码
- 20. 将二进制32位IEEE-754浮点数转换为.net
- 21. 将二进制字符串转换为IEEE-754单精度 - Python
- 22. 十进制到半精度浮点数
- 23. 如何将IEEE-11073 16位SFLOAT转换为Java中的简单浮点型?
- 24. IEEE-754单精度浮点数mips
- 25. 在C#中将十六进制转换为IEEE 754浮点数
- 26. 什么VHDL库使用十进制模
- 27. 标准双精度IEEE浮点数有多少位的精度?
- 28. 为什么在非整数值上使用模数会失去浮点精度?
- 29. 使用__asm从十六进制偏移调用函数
- 30. 使用IEEE 754将浮点数转换为基数10使用IEEE 754
任意选择,没有参照的指数偏压使得IEEE漂浮可比作为符号/幅值的整数。这对CPU内部可能是有用的,所以他们可以重用他们的比较硬件的浮点数。这对于像['nextafterf'](http://en.cppreference.com/w/c/numeric/math/nextafter)之类的float bithack函数也很有用。 –