(以下代码是lintcode上其他用户(xiaolong4)的解答 )
描述
设计一个方法,用尽可能少的指令,将一个整数中奇数数位和偶数数位的数字交换 (如,数位 0 和数位 1 交换,数位 2 和数位 3 交换,等等)。
您在真实的面试中是否遇到过这个题?
样例
5 = (101)2 => (1010)2 = 10
偶数位上的往左移一位;
奇数位上的往右移一位;
class Solution {
public:
/*
* @param x: An integer
* @return: An integer
*/
int swapOddEvenBits(int x) {
// write your code here
unsigned int even=x&0xAAAAAAAA;
unsigned int odd=x&0x55555555;
return (even>>1)|(odd<<1);
}
};
网友评论