【问题标题】:Understanding offset-k method of representing negative integers理解表示负整数的offset-k方法
【发布时间】:2021-09-27 11:50:02
【问题描述】:

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

表示有符号整数的一种逻辑方式是有足够的范围 在二进制数中,以便零可以偏移到中间 正二进制数的范围。那么负数的大小 二进制数可以简单地从那个零点减去。

我了解机制,例如用 11 位表示数字 4,我会做 4+1023=1027,但无法理解它背后的逻辑以及它为什么起作用。

【问题讨论】:

    标签: binary


    【解决方案1】:

    如果我们有从 -8 到 +8 的数字,我们可以通过将 8 添加到所有或数字来删除符号。然后数字将是 0 到 +16。这更像是移动刻度(如将 Celsius 转换为 Kelvin)以获得正值。

    这种表示允许对有偏数的运算与对无符号整数的运算相同,但实际上同时表示正值和负值。

    这个方法有几个名字——Excess-K,也叫offset binarybiased representation,使用一个固定值K作为一个偏差值。

    一个值由比预期值大 K 的无符号数表示。

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

    为了更清楚地理解下面的两个例子:

    示例:1

    4 位模式

    0110 最高有效位的数字/列值为 8,因此 4 位模式称为 Excess (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 位模式称为 Excess (16) 表示法。

    • 要转换这个例子,找到整个模式的总和值,就像一个标准的二进制数一样:

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

    • 结果是一个有符号值,+14。

    希望能理清背后的逻辑,明白符号位0代表负号,1代表非负号表示有符号值

    【讨论】:

    • 谢谢,能否详细说明您的最后一段?
    猜你喜欢
    • 2023-04-03
    • 2018-04-10
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2020-10-13
    相关资源
    最近更新 更多