2 ^幂而不使用math.pow和乘法

Nam*_*man 10 c++

有没有办法在不使用math.pow或乘法运算符的情况下使用代码2 ^ power.至今,

我虽然使用了2个计数器和附加功能,但我的程序似乎没有用.到目前为止,这是我的工作.

int counter=0; // k 
int userNumber=0; // p 
int power=0;
int sum=0;

cout << "Enter a non-negative number: ";
cin >> userNumber;


while (userNumber > counter)
{
    power +=2;
    counter++;
    power++;
}

sum = power - 1;
// post-condition: Sum = 2^p -1
cout << "The output is " << sum << endl;
return 0;
Run Code Online (Sandbox Code Playgroud)

fli*_*ght 75

您可以2^n使用位操作进行计算.简单地说:

1 << n;
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为使用二进制数进行左移相当于乘以2.

  • 为2k +1,现在您不再需要获得编辑许可了.:) (6认同)

gib*_*tar -5

   pow = 1;
   while(userNumber > counter){
        pow = pow+pow;
        counter++;
   }
Run Code Online (Sandbox Code Playgroud)

  • @Namen:看来您不喜欢任何位移答案。这是有原因的吗? (5认同)
  • 这看起来更像是尝试计算 2*userNumber,而不是 2^userNumber。由于功率初始化为零,因此始终生成零。 (5认同)
  • 您在发表评论前 3 分钟对其进行了编辑。不酷,第一次发布时是一个可怕的失败。 (3认同)