ゴールデンインタビュープログラマ - 05.07合わせ面質問交換(ビット演算)

1.トピック

ペアリングの交換。プログラミング、整数の奇数ビット及び偶数ビットに切り替え、より少ない命令を使用しようとする(すなわち、ビット0と1ビット交換は、交換機2は3ビットなどのビット)。

示例1:
 输入:num = 2(或者0b10)
 输出 1 (或者 0b01)
 
示例2:
 输入:num = 3
 输出:3
 
提示:
num的范围在[0, 2^30 - 1]之间,不会发生整数溢出。

出典:滞在ボタン(LeetCode)
//leetcode-cn.com/problems/exchange-lcci:リンク:httpsの
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。

2.問題解決

  • 01は、それぞれ進数、パリティビットのデジタルオリジナル抽出交互
  • 右の偶数ビットは、奇数番目のビットが左
  • そして、|マージ
class Solution {
public:
    int exchangeBits(int num) {
        int even = 0b10101010101010101010101010101010;//0xAAAAAAAA
        int odd =   0b1010101010101010101010101010101;//0x55555555
        return ((num&even)>>1) | ((num&odd)<<1);
    }
};

ここに画像を挿入説明

公開された763元の記事 ウォンの賞賛985 ビュー280 000 +

おすすめ

転載: blog.csdn.net/qq_21201267/article/details/105085996