理解表示负整数的offset-k方法

时间:2016-05-23 05:47:53

标签: binary

我正在阅读关于表示负整数的offset-k方法的this article。有人可以用一些例子来解释以下段落:

  

表示有符号整数的一种逻辑方法是具有足够的范围   二进制数,以便零可以偏移到中间   正二进制数的范围。那么负面的幅度   二进制数可以简单地从该零点中减去。

我理解机制,例如为了用11位代表4号,我做4+1023=1027,但不能理解它背后的逻辑及其工作原理。

1 个答案:

答案 0 :(得分:1)

如果我们的数字范围为-8到+8,我们可以通过向所有或数字添加8来删除该符号。数字将为0到+16。它更像是移动比例(如将 Celsius 转换为 Kelvin )以仅获得正值。

此表示允许对偏置数字的操作与无符号整数相同,但实际上表示正值和负值。

此方法由多个名称调用 - Excess-K ,也称为偏移二进制偏向表示,使用固定值K作为偏差值。

值由无符号数表示,其中K大于预期值。

有偏的表示 现在主要用于浮点数的指数。 IEEE浮点标准将单精度(32位)数的指数字段定义为8位超出127字段。

更清楚地了解以下两个例子:

实施例:1

4位模式

0110最高有效位的数字/列值为8,因此4位模式称为超额(8)符号。

  • 要转换此示例,请查找整个模式的总和值,就像标准二进制数:

    一样
    =(0 x 8) + (1 x 4) + (1 x 2) + (0 x 1 ) 
    =0      +   4      +   2     +   0
    =6 
    
  • 然后从总和中减去多余的值8,(6 - 8)

  • 结果是有符号值-2。

示例2

5位模式

11110,最高有效位的数字/列值是16,因此5位模式被称为超额(16)符号。

  • 要转换此示例,请查找整个模式的总和值,就像标准二进制数:

    一样
    (1x16) + (1x8) + (1x4) + (1x2) + (0x1)
    = 16   +    8  +   4   +   2   +   0
    = 30
    
  • 然后从总和中减去当前超额值16(30 - 16)

  • 结果是带符号的值,+ 14。

希望它能清除背后的逻辑并理解0的符号位代表负号,1代表非负号以表示有符号值