プロが教える店舗&オフィスのセキュリティ対策術

与えられた数nが2のべき乗なのかどうかを調べる方法で以下の意味が全く解らないので解説お願いします
nが8だとしてどこをどうやったら2のべき乗であると解るのでしょうか?
2つのバイナリを合わせると0になるところまでは解りました。

n & (n-1) = 0b1000 & 0b0111 = 0

またこの計算で解るのは2のべき乗だけですか?

よろしくお願いします

A 回答 (1件)

2進数ってそもそも


a * 2^3 + b * 2^2 + c * 2^1 + d * 2^0
をabcdって書く表記法だよね。

2のべき乗であるときって、
a,b,c,dのうち一つだけが1であるときだよね。

この
abcdという2進数の最下位ビットを0にしたとき、0になるよね? 「1つだけが」1で、それは最低ビットであるはずだから。

n - 1ってのは、

1100000
1011111

って感じで最低ビットを0に、最低ビット未満を全部1にしたものになるから、

1100000
1011111
----------
1000000

あれ? 0にならない、つまり1100000は「2のべき乗じゃない」
    • good
    • 0
この回答へのお礼

だよね〜だよね〜wwwwwww
こんな所で中学生相手に上から目線なのかは解らないけど、中学生のぼくから見ても馬鹿っぽく見えるから気をつけたほうが良いですよ

でも、ありがとうございました!

お礼日時:2018/01/26 07:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!