我正在阅读这份文件: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吗?
装配班次的动画非常棒。感谢
答案 0 :(得分:1)
这是一个移位操作,例如参见维基百科的这篇文章:http://en.wikipedia.org/wiki/Bit_shift#Bit_shifts
移出的位通常是不可恢复的( rotate 除外),因此操作本身不可逆。有一些变体,如果你只移位一个位位置,移出的位的值保存在一个标志寄存器(你的引用中提到的进位位),你可以用它来有条件的跳跃。