Bit Manipulation
ビット操作 技法 - ビット演算 を利用 してアルゴリズム性能 を最適化 。
一般的なアルゴリズム/応用と技法の対照表
| アルゴリズム/応用 | 技法 1 (奇偶 ) | 技法 2 (取得 ) | 技法 3 (1設定 ) | 技法 4 (0設定 ) | 技法 5 (切替 ) | 技法 6 (最右 1消去 ) | 技法 7 (最右 1取得 ) | 技法 8 (計数 ) |
|---|---|---|---|---|---|---|---|---|
| 暗号学 (SHA/MD5) | ✓ | ✓ | ✓ | ✓ | ||||
| IP/サブネットマスク | ✓ | ✓ | ✓ | ✓ | ||||
| Bloom Filter | ✓ | ✓ | ✓ | |||||
| N 皇后問題 | ✓ | ✓ | ✓ | ✓ | ✓ | |||
| チェス盤 ゲーム状態 | ✓ | ✓ | ✓ | ✓ | ||||
| グレイコード生成 | ✓ | ✓ | ✓ | |||||
| 権限 システム | ✓ | ✓ | ✓ | |||||
| ハミング距離 | ✓ | ✓ | ||||||
| XOR 暗号化 | ✓ | |||||||
| Fenwick Tree | ✓ | ✓ | ||||||
| Bitmap 操作 | ✓ | ✓ | ✓ | ✓ | ||||
| 圧縮 アルゴリズム (LZW) | ✓ | ✓ |
基本ビット操作技法
- 奇偶判定
(n & 1) == 0 - 第
i ビットを取得
(n >> i) & 1 - 第
i ビットを 1 に設定
n | (1 << i) - 第
i ビットを 0 に設定
n & ^(1 << i) - 第
i ビットを切替
n ^ (1 << i) - 最
も右
の 1 を消去
n & (n - 1) - 最
も右
の 1 を取得
n & (-n) - 二進数 中 の 1 の個数 を計算