海外の検索サイトで調べていたときにうっかりヒットしてしまった 「ど忘れ」というページに出ていたのだが、 学生専用サイトということで sign in し辛い。 そちらに「2の2乗」と書いてあるのだが2の2乗は4だから面白くない訳で、 2のn乗ということで。 (a > 0) && ((a & (a - 1)) == 0) ビットが2つ以上1になっていたら、 1を引いたときに、 下位のビット側から引き算されるから、 それより上のビットの状態がそのまま残っている。 従って、& を計算しても0にならない。 0 になるとしたら、ビットが1箇所だけ1のはずである。 括弧は不要なのがあるかもしれないが間違いがないように付けておいた。 それよりも、 重要な単語が少ないので検索が難しい、 というようなことがコメントに書いてあったのが気になった。 Tweet