差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
programming_algorithm:bit_operation [2023/09/01] – ikatakos | programming_algorithm:bit_operation [2023/09/01] (現在) – [bitが立っている条件の言い換え] ikatakos | ||
---|---|---|---|
行 134: | 行 134: | ||
===== bitが立っている条件の言い換え ===== | ===== bitが立っている条件の言い換え ===== | ||
- | $X$ で、$2^d$ の位のbitが立っているかの判定は、当然「$X \& 2^d$」でできる。 | + | 正整数 |
だが、$X$ を様々に変えて判定したいときなど、別の表現ができると嬉しいことがある。 | だが、$X$ を様々に変えて判定したいときなど、別の表現ができると嬉しいことがある。 | ||
行 142: | 行 142: | ||
* $\left \lfloor \dfrac{X+2^d}{2^{d+1}} \right \rfloor - \left \lfloor \dfrac{X}{2^{d+1}} \right \rfloor = 1$ | * $\left \lfloor \dfrac{X+2^d}{2^{d+1}} \right \rfloor - \left \lfloor \dfrac{X}{2^{d+1}} \right \rfloor = 1$ | ||
- | 特に3番目は、複数の $X$ での結果の合計を求めたい場合、 | + | 特に3番目は、複数の $X$ で、$2^d$ が立っている数が何個あるかを求めたい場合、 |
引く方と引かれる方をそれぞれまとめて計算してから合計同士を引いても正しく求まるので、たまに使えることがある。 | 引く方と引かれる方をそれぞれまとめて計算してから合計同士を引いても正しく求まるので、たまに使えることがある。 | ||