我正在阅读关于表示负整数的offset-k方法的this article。有人可以用一些例子来解释以下段落:
表示有符号整数的一种逻辑方法是具有足够的范围 二进制数,以便零可以偏移到中间 正二进制数的范围。那么负面的幅度 二进制数可以简单地从该零点中减去。
我理解机制,例如为了用11位代表4号,我做4+1023=1027
,但不能理解它背后的逻辑及其工作原理。
答案 0 :(得分:1)
如果我们的数字范围为-8到+8,我们可以通过向所有或数字添加8来删除该符号。数字将为0到+16。它更像是移动比例(如将 Celsius 转换为 Kelvin )以仅获得正值。
此表示允许对偏置数字的操作与无符号整数相同,但实际上表示正值和负值。
此方法由多个名称调用 - Excess-K ,也称为偏移二进制或偏向表示,使用固定值K作为偏差值。
值由无符号数表示,其中K大于预期值。
有偏的表示 现在主要用于浮点数的指数。 IEEE浮点标准将单精度(32位)数的指数字段定义为8位超出127字段。
更清楚地了解以下两个例子:
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。
5位模式
11110,最高有效位的数字/列值是16,因此5位模式被称为超额(16)符号。
要转换此示例,请查找整个模式的总和值,就像标准二进制数:
一样(1x16) + (1x8) + (1x4) + (1x2) + (0x1)
= 16 + 8 + 4 + 2 + 0
= 30
然后从总和中减去当前超额值16(30 - 16)
结果是带符号的值,+ 14。
希望它能清除背后的逻辑并理解0的符号位代表负号,1代表非负号以表示有符号值