1

我正在阅读这份文件: http: //www.fadden.com/techmisc/hdc/lesson11.htm

他在其中说:

问题是,我们不知道这些时间有多长。因此,我们使用我们首先查看的一元编码对长度进行编码(为清楚起见添加了冒号):

 value     binary coding
 1         1:
 2         01:0
 3         01:1
 4         001:00
 5         001:01
 16        00001:0000
 64        0000001:000000
 256       000000001:00000000

这种方法实际上是 floor(log i) 个零,后跟一个 1,然后是没有前导 1 的二进制代码。由于第一部分是一元计数,因此第二部分的每个位都有一个“0”。这意味着我们可以用零散布数据位,如下所示:

 value     binary coding
 1         1
 2         001
 3         011
 4         00001
 5         00011
 16        000000001
 64        0000000000001
 256       00000000000000001

这具有相同的长度,但可以使用简单的移位例程来实现(汇编:左移,如果进位设置则退出,否则将下一位移入我们正在形成的整数)。

这个装配偏移到底是什么,它是可逆的,这意味着 00000000000000001 可以在没有额外数据的情况下回到 00000000100000000 吗?

装配班次的动画会很棒。谢谢

4

1 回答 1

2

这是一个位移操作,例如参见这篇维基百科文章:http ://en.wikipedia.org/wiki/Bit_shift#Bit_shifts

移出的位通常是不可恢复的(除了rotate),因此操作本身是不可逆的。有一些变体,如果您仅移动一个位位置,则移出的位的值将保存在标志寄存器(引用中提到的位位)中,您可以将其用于条件跳转。

于 2010-08-10T18:09:53.217 回答