CDの保有枚数を教えてください

このwhile文
public class WhileSample {

public static void main(String[] args) {
int num = 1; // 初期値設定

// 繰り返しの条件(numが1024より小さい間)
while (num < 1024) {
// 2の倍数を計算
num = num * 2;

// 結果を出力
System.out.println(num);
}
}
}

実行結果は
2
4
8
16
32
64
128
256
512
1024    でした。

num = num * 2 の右辺のnumに3を入れた場合、左辺のnumは6という回答が出ます。
1024より小さくて2の倍数なのに、なぜ6は含まれないのですか?

Java勉強始めたところです。回答を宜しくお願い致します。

A 回答 (2件)

こんにちは



>// 2の倍数を計算
『「2の倍数」を計算』していると思っていらっしゃるようですが、正確ではありません。
どちらかと言えば、「2倍した数を計算」していると考える方が妥当だと思います。

初期値に対して、値を2倍する処理をループの回数だけ繰り返しています。
この結果は、「2の倍数(=偶数)」を網羅するものではありません。

>2 = 1*2
>4 = 1*2*2
>8 = 1*2*2*2
>16 = 1*2*2*2*2
 ・・・・
といった具合です。

初期値が1なので、2の累乗の数を求める処理になっています。
    • good
    • 0
この回答へのお礼

fujillin 様
fujillin 様のおかげで、理解できました。
ありがとうございました。

お礼日時:2020/09/23 16:29

Java全然知らんですが、このコードは「2の倍数」と言うより「2の累乗」を計算していくコードです。


従って、3は計算途中では出てきません(3は2の倍数じゃないから)。
    • good
    • 0
この回答へのお礼

cametan_42 様
なるほど・・・そもそもの理解ができていなかったみたいです・・・。
ご指摘ありがとうございます。

お礼日時:2020/09/23 16:26

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


おすすめ情報