桶式移位器

桶式移位器（barrel shifter）是一种数字电路，可以在一个时钟频率周期内，将数据字进行特定比特数的移位。桶式移位器可以用一串的数据选择器实现，某一个数据选择器的输出是其他数据选择器的输入，其关系则视要位移的比特数而定。
例如，以一个四比特的桶式移位器为例，一开始的输入是A, B, C及D，桶式移位器可以由输入ABCD得到DABC、CDAB或BCDA，所有比特的信息都会留下来，只是位置以循环组合的方式改变，桶式移位器有许多不同的应用，是微处理器中的一个重要成分。

实现

桶式移位器可以用平行的2×1数据选择器的组合而成。对于8位的桶式移位器，需要二个中间的信号，分别表示位移四比特、二比特或是不位移，这是依S[2]和S[1]的值而定，信号会再经过数据选择器位移一比特，这是由S[0]控制。

 int1  = IN       , if S[2] == 0
       = IN   << 4, if S[2] == 1
 int2  = int1     , if S[1] == 0
       = int1 << 2, if S[1] == 1
 OUT   = int2     , if S[0] == 0
       = int2 << 1, if S[0] == 1
较大的桶式移位器会有更多的中间信号。

用途

桶式移位器常用的场合是用硬件实现浮点数运算时，若要进行浮点的加法或减法，两个数字的有效位数需要对齐，也就是将较小的数字往右移，增加其次幂，直到两个数字的次幂相等为止，实际作法是将二数的次幂相减，再利用桶式移位器右位移较小的数字，位移比特数即为二数的次幂的差。若不是用桶式移位器，而是一般较简单的移位器，位移n比特需要n个时钟频率周期。