作者jk76818 (这首歌是我点的!!)
看板Electronics
标题[问题] IEEE754的Excess问题?
时间Wed Jul 22 16:36:00 2015
各位大大您们好
小弟有个问题想请教,一般Excess Notation中 Excess为2^(n-1)
但是在IEEE754的标准中Excess则是(2^(n-1))-1
也就是说在单精度的标准中(32位元)
Exponent占8位元,要换成10进位数字是减掉127(即((2^(8-1)-1))而非减掉128(即2^(8-1))
为何要多减一个1呢? 是跟隐藏位元有关吗?
小弟一直想不透
谢谢各位
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 211.75.223.247
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Electronics/M.1437554162.A.002.html
※ 编辑: jk76818 (211.75.223.247), 07/22/2015 16:40:33
1F:→ Schottky: 您是不是要查: 二的补数 07/22 17:04
谢谢这位大大,但是这跟2补数应该没有太大的关系
我後来直接寄mail去问
有在台大开放式课程开课开计算机概论的于天立老师,以下是他回的内容
**************************************************************
jk76818你好,
谢谢来信。
这个问题其实答案可以很复杂也可以很简单。
简单版的答案就是"这只是一个选择"。bias 用128 一样可以work。
选择127其实是有很多原因的,但并没有任何一个原因使得用128不行。
其中一个原因如下:
ieee 754 把数字分成5种。其中inf和nan是当exp为全1时。
也就是用 127 当 bias时,exp 真正的range 是 -127 ~ 127 (128 被牺牲了)
这样使得exp比较平衡些。
当然exp为全0时,其实也被牺牲了,但是毕竟0的确很接近2^-127。
还有另一个原因是gradual underflow…,但讲起来真的很复杂…
ieee 754 为了减轻gradual underflow
(
http://www.cs.rice.edu/~taha/teaching/05F/210/Labs/Lab07/gradualUnderflow.html)
的问题,决定纳入denormalized 数字。
denormalized 是 exp 为全0,但mantissa不为全0。
当初设计者决定denormalized数字必需能表示1/MAX_FLOAT,而127可以达成这个目的(如
上述的平衡)
当然,为何一定要有denormalized 数字,或是为何一定要能表示1/MAX_FLOAT,这都只是
一个选择而已。
总之,选择127背後有些道理(其实都还满weak的),但是用128并没有不行。
于天立
******************************************************************
BTW 原先寄信给老师,没有料想他会这麽快回我,甚至认为他应该不会回我
因为我不是他的学生,也不是台大的学生,加上他研究繁忙
但他两天内就立即回了我信
真的是受宠若惊
果然是在台大学生中评价很好的老师
※ 编辑: jk76818 (211.75.223.247), 07/24/2015 18:02:29
※ 编辑: jk76818 (211.75.223.247), 07/24/2015 18:04:16
2F:推 cebelas: 推于天立老师回信 07/24 23:12