bits swap within a byte

Joel Sherrill joel.sherrill at oarcorp.com
Thu Jun 8 17:25:08 UTC 2006


Kate Feng wrote:

> Is there any elegant built-in macro which does bits swap
> within each byte or other alternatives ?  For example,
> bit 0 <-> bit 7, bit 1 <->bit 6, bit 2 <->bit 5, bit3 <->bit 4 ?
>
I would this link on Google with multiple algorithms:

http://graphics.stanford.edu/~seander/bithacks.html

And at 
http://www.ocf.berkeley.edu/~wwu/cgi-bin/yabb/YaBB.cgi?board=riddles_cs;action=display;num=1103355188
I found this code snippet which looks promising. 
n = n&11110000 >>4 | n&00001111 << 4;
n = n&11001100 >>2 | n&00110011 << 2;
return  n&10101010 >>1 | n&01010101 << 1;

I am not sure the bit constants are specified correctly though.  Looks 
like some would be turned to octal and others
to decimal to me.  Better to convert them to hex and be sure.  Might as 
well as parentheses as well.

It can be faster to do a table lookup.   Rather than a 256 entry table, 
tt should be possible to work on nibbles and
then use a 16 entry table to swap the nibble values.

--joel

> Thanks,
> Kate
>
>




More information about the users mailing list