
The Bit-Reversal Algorithm
345
The Bit-Reversal Algorithm
The complexity of finding the bit-reversed order is reduced by using the
similarities in the bit patterns of the numbers. We can easily observe the
following similarities in the bit-patterns of the list of binary numbers shown
in Table C.l. (1) The bit-reversal of odd numbers in the first half of the
list (1,3,5,7) are the even numbers (8,12,10,14) in the second half of the
list, because odd numbers have lsbs 1 and since they are in the first half
their msbs are zero. Therefore, in the bit-reversed form, they have their
msbs 1 and lsbs 0. For example, the bit-reversal of
0001
is 1000. Therefore,
the bit-reversal of the even numbers in the second half of the list need
not be found. (2) Since the only difference between an even number and
the next odd number is in the lsb, lsb 0 for even number and 1 for odd
number, once the bit-reversal of an even number is found the bit-reversal
of the next odd number is deduced by adding y to the bit-reversal of the
even number (setting the msb of the bit-reversal of the even number). For
example, the bit-reversal of 4 and 5 are, respectively, 2 and 10. Therefore,
the bit-reversals of (1,3,5,7) need not be found directly. With these two
observations, the problem of finding the bit-reversal of the set of 16 numbers
reduces to finding the bit-reversal of the four even numbers (0,2,4,6) in
the first half and those of the four odd numbers (9,11,13,15) in the second
half of the list. (3) Notice that the bit-patterns of these numbers in the two
halves of the Table C.l are the same except for the lsbs and msbs shown in
boldface. The bit-reversals of the odd numbers can be found from those of
the even numbers by simply adding ^ + 1 to the bit-reversals of the even
numbers. For example, the bit-reversal of 11 is found by adding 9 to the
bit-reversal of 2, which is 4, to get 13. Therefore, the list of numbers for
which the bit-reversals have to be found directly is further reduced to the
first four even numbers (0,2,4,6).
While we can keep on reducing the list by using the similarity in bit
patterns, we do not go any further for the following two reasons: (i) program
code becomes longer and (ii) coupled with the fact that we need only ^ bit-
reversals for an AT-point DFT with vector length two, the problem reduces
to the finding of only y bit-reversals directly. The execution time for
this operation is a negligible fraction of the execution time of the DFT
algorithms.
To find the bit-reversals of the first four even numbers, we use the bit-
reversal of the previous even number to find the bit-reversal of the current