题目描述:
将整数的奇偶位互换,假设这个数是9,二进制就是1001,那么得到的结果就是0110
分析:
首先我们需要两个个数
a = 0x55555555
b = 0xaaaaaaaa
a和b都是16进制数,转换为二进制分别是0101 0101 0101…,1010 1010 1010…(因为1010对应的十进制是10,而10在16进制中是a,0101也同 理),然后将需要改变的数n分别对a和b进行&运算得到c和d,然后将c向左移1位,将d向右移1位,再分别进行异或,就得到所求结果,看下面示例
n = 1001
a = 0101
b = 1010
c = n & a = 0001
d = n