今天遇到了一道题,挺有意思的!思路呢,是借鉴前辈大佬的。纯纯想记录并且分享给大家!
先讲讲我的思路把。
通过整数右移的方法求得每位二进制数,再用一个数组保存起来。通过对数组二进制下标的控制,交换二进制奇数位和偶数位。
接下来,开始奇妙的脑回路旅行吧。
1.整数二进制序列与10101010101010101010101010101010(即0xaaaaaaaa)进行按位与的操作,保留奇数位。要想完成奇数位与偶数位的交换,那么就要将奇数位向左移动一位来实现。如果向右移动一位,会导致奇数位的一位缺失。
2.整数二进制序列与01010101010101010101010101010101(即0x55555555)进行按位与的操作,保留偶数位。要想完成奇数位与偶数位的交换,那么就要将偶数位向右移动一位来实现。如果向左移动一位,会导致偶数位的一位缺失。
3.直接将以上的结果相加,即完成偶数位与奇数位的交换。
版权声明:本文为shizhongruyi0606原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。