上記のように、2の冪乗かの判定ができます。 2の冪乗という数は、2進数で、$MSb$(Most Significant bit : 最上位ビット)の1つのみが立っている状態です。 そして、2の冪乗-1という数は、2の冪乗で立っているビットより小さい位のビットが全て立っている状態です。 つまり、それらの$AND$(論理積)を取ると$0$になります。 例) $8_{(10)}=1000_{(2)}$の判定 $1000 \space and \space 0111 = 0000$ 論理積が$0$になったので、2の冪乗となる。 ビットシフトを用いて2の累乗を求める 元記事の方では、$n$が与えられる数とすると、2を $log_2(n)$の小数を切り捨てた値 乗することによって目的の値を求めていました。 今回は、2の冪乗を求めるということなので、bit演算(ビットシフト)を用いて求めてみます。 まず
