差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
次のリビジョン両方とも次のリビジョン
programming_algorithm:bit_operation [2019/02/13] ikatakosprogramming_algorithm:bit_operation [2023/09/01] ikatakos
行 3: 行 3:
   * [[https://qiita.com/drken/items/7c6ff2aa4d8fce1c9361#bit-%E5%85%A8%E6%8E%A2%E7%B4%A2|ビット演算 (bit 演算) の使い方を総特集! 〜 マスクビットから bit DP まで 〜 - Qiita]]   * [[https://qiita.com/drken/items/7c6ff2aa4d8fce1c9361#bit-%E5%85%A8%E6%8E%A2%E7%B4%A2|ビット演算 (bit 演算) の使い方を総特集! 〜 マスクビットから bit DP まで 〜 - Qiita]]
   * [[https://qiita.com/yz2cm/items/853d4a657bd49e2b1d90|ビット演算のイディオムに関する私的メモ - Qiita]]   * [[https://qiita.com/yz2cm/items/853d4a657bd49e2b1d90|ビット演算のイディオムに関する私的メモ - Qiita]]
 +  * [[https://www.slideshare.net/KMC_JP/slide-www|明日使えないすごいビット演算]]
  
 =====ビット集合Gの全ての部分集合をイテレート===== =====ビット集合Gの全ての部分集合をイテレート=====
行 129: 行 130:
 </code> </code>
 ++++ ++++
 +
 +
 +===== bitが立っている条件の言い換え =====
 +
 +$X$ で、$2^d$ で表されるbitが立っているかの判定は、当然「$X & 2^d$」でできる。
 +
 +だが、$X$ を様々に変えて判定したいときなど、別の表現ができると嬉しいことがある。
 +
 +  * $X$ で $2^d$ のbitが立っている
 +  * $X$ を $2^{d+1}$ で割ったあまりが、$2^d$ 以上
 +  * $\left \lfloor \dfrac{X+2^d}{2^{d+1}} \right \rfloor - \left \lfloor \dfrac{X}{2^{d+1}} \right \rfloor = 1$
 +
 +特に3番目は、複数の $X$ での結果の合計を求めたい場合、
 +引く方と引かれる方をそれぞれまとめて計算してから合計同士を引いても正しく求まるので、たまに使えることがある。
 +
  
  
programming_algorithm/bit_operation.txt · 最終更新: 2023/09/01 by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0