差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
programming_algorithm:bit_operation [2019/02/13] ikatakosprogramming_algorithm:bit_operation [2023/09/01] (現在) – [bitが立っている条件の言い換え] ikatakos
行 130: 行 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$ で、$2^d$ が立っている数が何個あるかを求めたい場合、
 +引く方と引かれる方をそれぞれまとめて計算してから合計同士を引いても正しく求まるので、たまに使えることがある。
 +
  
  
programming_algorithm/bit_operation.1550046957.txt.gz · 最終更新: 2019/02/13 by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0