エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
ビット演算 [6]:変数内の特定のビットを交換する - Qiita
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
ビット演算 [6]:変数内の特定のビットを交換する - Qiita
ビット演算 [6] では、排他的論理和(^)を用いて、異なる変数の同じ位置のビットを交換する方法を示し... ビット演算 [6] では、排他的論理和(^)を用いて、異なる変数の同じ位置のビットを交換する方法を示したが、そのテクニックを使ってひとつの変数内の特定のビットを交換することも可能だ。 変数 x の交換したいビットを mask1, mask2 とし、それらが n ビット離れている場合(ただし mask1 >> n = mask2 とする)、反転マスクを以下のように計算することが出来る。 auto t = ((x >> n) ^ x) & mask2; t |= t << n; この反転マスクを用いると、以下の文で mask1, mask2 の部分を交換することができる。 x ^= t; 例えば、変数xの下位4bitと、そのすぐ上の4bitを交換したい場合は、以下のように記述する。 auto t = ((x >> 4) ^ x) & 0x0f; t |= t << 4; x ^= t; もし、