为什么我们偏置浮点数的指数?

so.*_*red 21 floating-point exponent ieee-754

我试图围绕这个二进制数字的浮点表示,但我无法找到,无论我在哪里,都能找到一个很好的答案.

为什么指数有偏差?

旧的可靠的二次补码方法有什么问题?

我试着看一下维基百科关于这个主题的文章,但它所说的一切都是:"对于签名值的通常表示,会使比较变得更难."

Mar*_*son 24

IEEE 754编码具有方便的特性,通过简单地按字典顺序比较相应的位串,或者等效地,通过将​​这些位串解释为无符号整数并比较这些整数,可以在两个正的非NaN数之间执行顺序比较.这适用于从+0.0到+ Infinity的整个浮点范围(然后扩展比较以将符号考虑在内是一件简单的事情).因此,例如在IEEE 754二进制64格式中,1.1被编码为比特串(msb优先)

0011111111110001100110011001100110011001100110011001100110011010
Run Code Online (Sandbox Code Playgroud)

while 0.01被编码为位串

0011111110000100011110101110000101000111101011100001010001111011
Run Code Online (Sandbox Code Playgroud)

在字符串之前按字典顺序发生1.1.

为此,具有较小指数的数字需要在具有较大指数的数字之前进行比较.有偏差的指数使得这个有效,而用二进制补码表示的指数会使比较更加复杂.我相信维基百科的评论适用于此.

另一个观察是,对于所选择的编码,浮点数+0.0被编码为完全由零组成的位串.