#include <stdio.h>
int main(int argc, const char *argv[])
{
unsigned int a = 0xaaaaaaaa;
//交换相邻的位
a = ((a & 0xaaaaaaaa)>>1) | ((a & 0x55555555)<<1);
//交换相邻的两位
a = ((a & 0xcccccccc)>>2) | ((a & 0x33333333)<<2);
//交换相邻的四位
a = ((a & 0xf0f0f0f0)>>4) | ((a & 0x0f0f0f0f)<<4);
//交换相邻的八位
a = ((a & 0xff00ff00)>>8) | ((a & 0x00ff00ff)<<8);
//交换相邻的十六位
a = ((a >>16) | (a <<16));
printf("change bit a = %#x\n",a);
return 0;
}
本文深入探讨了一种高效的位操作方法,通过使用位掩码和位移运算,实现对32位整数中位的反转与交换。具体步骤包括:1) 交换相邻的位;2) 交换相邻的两位;3) 交换相邻的四位;4) 交换相邻的八位;5) 交换相邻的十六位。最终,通过打印函数展示位操作后的结果。
3090

被折叠的 条评论
为什么被折叠?



