236. 交换奇偶二进制位

2018-09-23  本文已影响0人  小时候浪死了

(以下代码是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);
        
    }
};
上一篇 下一篇

猜你喜欢

热点阅读