ビット演算 [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; もし、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く