32 位 ieee754 浮点编码为何使用 127 作为阶码偏移量?

2014-08-14 21:55:31 +08:00
 hazard
仅仅是强行规定吗?
5560 次点击
所在节点    问与答
8 条回复
starfish
2014-08-15 00:57:12 +08:00
本来想直接给你解释,但写了一大堆东西后发现解释起来比较麻烦,所以请自行参考下列网页:

http://en.wikipedia.org/wiki/Binary32

http://babbage.cs.qc.cuny.edu/IEEE-754.old/References.xhtml
bcxx
2014-08-15 01:02:45 +08:00
额你 e 是 8 位那肯定是 127 啊……(为啥是 127 这个就要解释移码这玩意的作用了
hazard
2014-08-15 01:21:44 +08:00
@bcxx 一般的移码偏移不都是128么?
hazard
2014-08-15 01:25:56 +08:00
@starfish 能把那一堆东西发出来么。。。。?
bcxx
2014-08-15 09:40:17 +08:00
@hazard 是 2^(n - 1) - 1 啦 http://en.wikipedia.org/wiki/Exponent_bias

> By arranging the fields so that the sign bit is in the most significant bit position, the biased exponent in the middle, then the mantissa in the least significant bits, the resulting value will be ordered properly, whether it's interpreted as a floating point or integer value. This allows high speed comparisons of floating point numbers using fixed point hardware.

大概用这句就能解释了吧?
hazard
2014-08-15 09:45:46 +08:00
@bcxx 你认为是保持符号位?进行快速比较?
但比如阶码真值为0000 0000 加了127后是 0111 1111
而若阶码真值为 0000 0001 加了127 之后是 1000 0000
还是要要减了127后才能比较大小啊。。。否则一个负数怎么会比一个正数大呢?
bcxx
2014-08-15 09:49:43 +08:00
@hazard 你去画一下数轴看看加了 bias 之后的变化就应该明白了(噢加了 bias 之后最高位是 1 的就都是负数了)
hazard
2014-08-15 11:39:40 +08:00
@bcxx 1 加了Bias以后是 128 最高位是1 但它本身不是负数啊。。。?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/127937

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX