记得在以前也是写过一个按位反转(Reversing Bits)的文章,代码都是自己的,写的傻乎乎的。
这次重新对它进行了书写。再加上由于看了 Henry S. Warren 的 《Hacker's Delight》一书中的有关
Reversing Bits 的相关介绍,所以写了这篇笔记。
unsignedint ReverseBitsInWord00(unsigned int Num)
{
unsigned int ret = 0;
int i;
for(i=0;i<32;i++)
{
ret <<= 1;
ret |= Num & 1;
Num >>=1;
}
return ret;
}
上面的程序通过每次取传入参数的最后一位( Num & 1),然后与要返回的结果相 “ 或 ”,
把传入参数 Num 右移 1 位,要返回的结果左移一位,来实现数字反转的。
unsignedint ReverseBitsInWord01(unsigned int Num)
{
unsigned int ret = 0;
int i;
for(i=0;i<16;i++)
{
ret |= (Num & (1 << i)) <<
(31-2*i);
ret |= (Num & (0x80000000 >>