算法题_位运算_7_将二进制整数的奇偶位互换
位运算
将二进制整数的奇偶位互换
这道题是真的有点难,一开始想了好久,看了教程后,画了一些草图,才慢慢清晰,特此记录一下,方便自己复习。
题目:将整数的奇偶位互换
题目描述:例如整数9,二进制为1001,则换为0110,十进制为6
9 的二进制:00 00 10 01,交换之后
6 的二进制:00 00 01 10
解体思路:
1、拿到整数的二进制N
2、N 与 0101……0101做&运算,即可保留奇数位,得到数P
2.1、32位的二进制 "0101 …… 0101" 可写为十六进制 "0x5555 5555"
3、N 与 1010……1010做&运算,即可保留偶数位,得到数Q
3.1、32位的二进制 "1010 …… 1010" 可写为十六进制 "0xaaaa aaaa"
4、将P左移1位(P<<1) 与 Q右移一位(Q>>1) 做|运算,
共有 0 条评论