プロが教えるわが家の防犯対策術!

プログラムで
ある数値が2のべき乗かどうか調べるにはどうしたら良いですか?

・底が2のlog関数が整数かどうか調べる

・For文で2で割っていき、割り切れるか調べる

もっと良い方法があれば教えてください。

A 回答 (3件)

アンドが何か解るだけの基礎知識はお持ちなのでしょうか? No1で答えが示されているのに実装できないようなので、とてもそうは思えません。


高校1年生になったらN進数、論理ともに学校で習いますので、その時に改めて考えてください。

それから、もはやC/C++と関係無いので数学とかVBのとこでやったら。
https://oshiete.goo.ne.jp/articles/qa/257
https://oshiete.goo.ne.jp/articles/qa/392
    • good
    • 1

コードを壊さずに貼る方法が無いので画像ではってあります。


VBSで許してください。

Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.

2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
「2のべき乗か調べる方法」の回答画像2
    • good
    • 0
この回答へのお礼

ありがとうございます。

うまくいきました。

しかし、
If (n And Mask) = 0 Then

というのはどういう条件分岐なのでしょうか?

それと2ではなく10とか他のべき乗の場合に
応用したい場合にはどうしたら良いですか?

お礼日時:2015/05/30 21:15

回答欄にプログラムを書くとインデントが壊れるので方針だけ:


N := 調べる数
mask := N-1
N & mask が 0 ならば2のべき乗。
    • good
    • 0
この回答へのお礼

ありがとうございます。

VBのところで質問しようと思ったのですが
誤ってC言語で質問してしまいました。

VBでも同じことが出来ますでしょうか?

お礼日時:2015/05/30 16:19

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