栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

今天遇到了一道题,挺有意思的!思路呢,是借鉴前辈大佬的。纯纯想记录并且分享给大家!

先讲讲我的思路把。

通过整数右移的方法求得每位二进制数,再用一个数组保存起来。通过对数组二进制下标的控制,交换二进制奇数位和偶数位。

接下来,开始奇妙的脑回路旅行吧。

1.整数二进制序列与10101010101010101010101010101010(即0xaaaaaaaa)进行按位与的操作,保留奇数位。要想完成奇数位与偶数位的交换,那么就要将奇数位向左移动一位来实现。如果向右移动一位,会导致奇数位的一位缺失。

2.整数二进制序列与01010101010101010101010101010101(即0x55555555)进行按位与的操作,保留偶数位。要想完成奇数位与偶数位的交换,那么就要将偶数位向右移动一位来实现。如果向左移动一位,会导致偶数位的一位缺失。

3.直接将以上的结果相加,即完成偶数位与奇数位的交换。

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1019159.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号