-3

私の値がN = 2、4、8、16のようになるように、whileループで「ステップ」またはインクリメントを作成しようとしています...基本的に2の累乗から2 ^ 20までです。私はやろうとしました

for(j=1;j<=20;j++){
    m=pow(2,2*i); 
    MAX=pow(2,20); 
    INC=pow(2,i);
while(m<=MAX){

次に、この中でコードを実行します。しかし、出力では2,4,6,8,10,12..これを行う正しい方法を知っている人はいますか? ありがとう!

4

2 に答える 2

3

for の値を 2 から開始し、反復ごとに2mを掛けることができます。m最適化として、乗算を 2 で左シフトに置き換えることができます。

int MAX = pow(2, 20); 
int m = 2;
while(m <= MAX) {
    //do your work
    m <<= 1;
}
于 2013-04-04T11:45:35.563 に答える
2

while ループの各反復で。変数を 2 倍します。

int m = 2;
while(m < maxpow)
{
  m = m * 2;
  printf("%d\n", m);
}
于 2013-04-04T11:45:56.857 に答える