我看过: "与无符号整数相似,但是由 - (2 ^(n-1) - 1)设置,其中n是数字中的位数。在旁边: 从技术上讲,我们可以选择任何偏好,但这里的选择非常普遍。" - http://inst.eecs.berkeley.edu/~cs61c/sp14/disc/00/Disc0.pdf
但是,我不知道重点是什么。有人可以用例子向我解释这个吗?此外,我应该何时使用它,给予其他选项,如恭维,签名和杂志以及两个赞美?
答案 0 :(得分:7)
偏向表示法是一种存储一系列不以零开头的值的方法。
简单地说,你采用从零到N的现有表示,然后为每个数字添加一个偏差B,使它现在从B变为N + B.
INT_MIN
且最重要的位翻转。答案 1 :(得分:6)
A"代表"是一种对信息进行编码的方法,以便从编码信息中提取细节或推断。
大多数现代CPU"代表"数字使用"二进制补码表示"。他们这样做是因为很容易设计数字电路,可以快速对这些值进行算术运算(加,减,乘,除......)。二进制补码也具有很好的属性,可以将最重要的位解释为二次幂(给出"无符号数")或作为符号位(给出有符号数)而不改变任何用于实现算术的硬件。
旧机器使用其他基础,例如,在60年代非常常见的机器将数字表示为卡在4位可寻址半字节中的二进制编码十进制数字集(IBM 1620和1401就是这样的例子)。因此,您可以用不同的方式表示相同的概念或价值。
偏见只是意味着无论您选择哪种表示(对于数字),您都会为该值添加一个恒定的偏差。据推测,这样做可以使某些事情更有效地完成。我不能和&#34 ;-(2 ^(n-1) - 1)"是一种非常普遍的(偏见)&#34 ;;我做了大量的汇编和C编码,而且还没有发现需要"偏见"值。
但是,有一个常见的例子。现代CPU主要实现IEEE浮点,它存储带符号,指数,尾数的浮点数。指数是2的幂,在零附近对称,但如果我没记错的话,偏差为2 ^(N-1),对于N位指数。
这种偏差允许使用标准机器二进制补码指令而不是特殊的浮点指令来比较具有相同符号的浮点值的等于/小于/大,这意味着有时使用实际的浮点数比较可以要避免。 (有关暗角细节,请参阅http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm)。 [感谢@PotatoSwatter注意到 我最初的答案不准确,让我去挖掘它。]