7-6
Rearrangements and Index Transformations
Many simple rearrangements of the bits in a
computer word correspond to even simpler transformations of the coordinates, or
indexes, of the bits [GLS1]. These
correspondences apply to rearrangements of the elements of any one-dimensional
array, provided the number of array elements is an integral power of 2. For
programming purposes, they are useful primarily when the array elements are a
computer word or larger in size.
As an example, the outer perfect shuffle of
the elements of an array A of size eight, with
the result in array B, consists of the
following moves:

Each B-index
is the corresponding A-index rotated left one
position, using a 3-bit rotator. The outer perfect unshuffle
is of course accomplished by rotating right
each index. Some similar correspondences are shown in Table 7-1. Here n is the number of array elements, "lsb"
means least significant bit, and the rotations of indexes are done with a log2n-bit rotator.
Table 7-1.
Rearrangements and Index Transformations
|
|
Index Transformation
|
Rearrangement
|
Array Index, or Big-endian Bit
Numbering
|
Little-endian Bit Numbering
|
Reversal
|
Complement
|
Complement
|
Bit flip, or generalized reversal (page
102)
|
Exclusive or with a constant
|
Exclusive or with a constant
|
Rotate left k positions
|
Subtract k (mod n)
|
Add k (mod n)
|
Rotate right k positions
|
Add k (mod n)
|
Subtract k (mod n)
|
Outer perfect shuffle
|
Rotate left one position
|
Rotate right one position
|
Outer perfect unshuffle
|
Rotate right one position
|
Rotate left one position
|
Inner perfect shuffle
|
Rotate left one, then complement lsb
|
Complement lsb, then rotate right one
|
Inner perfect unshuffle
|
Complement lsb, then rotate right
|
Rotate left one, then complement lsb
|
Transpose of an 8x8-bit matrix held in a 64-bit word
|
Rotate (left or right) three positions
|
Rotate (left or right) three positions
|
FFT unscramble
|
Reverse bits
|
Reverse bits
|