欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 【C语言】宏经典练习题,交换奇偶位

【C语言】宏经典练习题,交换奇偶位

2025/5/14 3:56:57 来源:https://blog.csdn.net/xiaofann_/article/details/147896672  浏览:    关键词:【C语言】宏经典练习题,交换奇偶位

交换奇偶位
写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。

#define Swap(x) x=(((x&0x55555555)<<1)+((x&0xaaaaaaaa)>>1))
int main()
{int a = 10;Swap(a);printf("%d\n", a);return 0;
}

写宏的思路:

假设这个数的二进制是11111111

                         奇数位01010101

只需要对该二进制位进行按位与01010101即可,而01010101的十六进制数为0x55555555再向前移动一位就可变成偶数位

而偶数位同理,将二进制数与10101010进行按位与操作即可,10101010的十六进制数为0xaaaaaaaa再向后移动一位

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词