算法及其实现:反转算法的实现方法

我们一起通过实例来学习一下吧,看下面这个例子:把一个32位整数按位反转,即第1位转到第32位,第2位转到第31位,依次下去。一牛人写的算法如下:

unsignedintbit_reverse(unsignedintn)
{
n=((n>>1)&0x55555555)|((n<<1)&0xaaaaaaaa);
n=((n>>2)&0x33333333)|((n<<2)&0xcccccccc);
n=((n>>4)&0x0f0f0f0f)|((n<<4)&0xf0f0f0f0);
n=((n>>8)&0x00ff00ff)|((n<<8)&0xff00ff00);
n=((n>>16)&0x0000ffff)|((n<<16)&0xffff0000);

returnn;
}


第一行代码为奇偶位相互交换;第二行为以两位为一单元,奇偶单元进行交换;第三行为以四位为一单元,奇偶单元进行交换;第四行为以八位为一单元,奇偶单元进行交换;最后一行为以十六位为一单元,奇偶单元进行交换。至此,32位反转完成,算法结束。
Tags:  算法实现 des算法实现 rsa算法实现 算法及其实现

延伸阅读

最新评论

发表评论