什么是装配班次?

时间:2010-08-10 18:04:29

标签: assembly shift

我正在阅读这份文件: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吗?

装配班次的动画非常棒。感谢

1 个答案:

答案 0 :(得分:1)

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

移出的位通常是不可恢复的( rotate 除外),因此操作本身不可逆。有一些变体,如果你只移位一个位位置,移出的位的值保存在一个标志寄存器(你的引用中提到的进位位),你可以用它来有条件的跳跃。