指数偏差如何使比较更容易

时间:2016-05-08 06:04:56

标签: binary

我正在阅读有关exponent bias浮点数的this文章,并说明如下:

  

n IEEE 754浮点数,指数偏差   工程意义上的单词 - 存储的值是偏移的   指数偏差的实际值。偏见是因为指数   必须是有符号的值才能表示两者都很小   和巨大的价值观,但两个补充,通常的代表   签名值会使比较更难。要解决这个问题了   指数在存储之前是有偏差的,通过调整其值来放置   它在适合比较的无符号范围内。通过安排   字段使符号位位于最高位位置,   中间的偏差指数,然后至少是尾数   有效位,结果值将被正确排序,   是否将其解释为浮点值或整数值。这个   允许使用固定的高速比较浮点数   点硬件。

我也从维基百科的article中找到了关于偏移二进制的解释:

  

这导致“零”值由1表示   在最高有效位中,在所有其他位中为零,并且通常   除了使用两个补码之外,效果很方便   最重要的位是反转的。它也有后果   在逻辑比较操作中 ,得到的结果与...相同   用二进制补码数值比较运算,而在   两个补码表示法,逻辑比较符合两个符号   补充数值比较操作当且仅当数字   被比较有相同的标志。否则的感觉   比较将被反转,所有负值都被视为   大于所有正值。

我真的不明白他们在这里谈论的是什么样的比较。有人可以用一个简单的例子解释一下吗?

1 个答案:

答案 0 :(得分:1)

这里的'比较'是指通过尺寸对数字进行的通常比较:5> 4,等等。假设浮点数用

存储
[sign bit] [unbiased exponent] [mantissa]

例如,如果指数是2的补码3位二进制数,并且尾数是4位无符号二进制数,那么你有

1 010 1001 = 4.5
1 110 0111 = 0.21875

你可以看到第一个比第二个更大,但为了解决这个问题,计算机必须计算1.001 x 2^20.111 x 2^(-2),然后比较得到的浮点数。这对于浮点硬件来说已经非常复杂,如果这台计算机没有这样的硬件,那么......

所以号码存储为

[sign bit] [biased exponent] [mantissa]

对指数使用相同的3位二进制数(此时有偏差;请参阅a related question)和无符号4位尾数,我们有

1 101 1001 = 4.5
1 001 0111 = 0.21875

但现在比较很容易!您可以将这两个数字视为整数1101100110010111,并看到第一个数字明显更大:即使是计算机也很明显,因为整数比较很容易。这就是使用有偏见的指数的原因。