C++ 2^不使用math.pow和乘法的幂
是否有任何方法可以在不使用math.pow或乘法运算符的情况下使用代码2^power。 到目前为止, 我曾想过使用2个计数器和加法器,但我的程序似乎不起作用。这是我迄今为止的工作C++ 2^不使用math.pow和乘法的幂,c++,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 (userNumbe
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;
int计数器=0;//K
int userNumber=0;//P
整数幂=0;
整数和=0;
cout>userNumber;
while(用户编号>计数器)
{
功率+=2;
计数器++;
power++;
}
总和=幂-1;
//post条件:Sum=2^p-1
无法检查ldexp
函数。您可以通过位操作计算2^n
。简单地做:
1 << n;
1这是面试问题吗?还是家庭作业?我之所以这么问,是因为我们在工作面试中遇到了这个问题。有一个非常简单的答案,基于一个相对模糊的C++特征,但是如果你应该自己猜……SevalaleSeyEV:我敢说你需要提出更具洞察力的面试问题。你会惊讶有多少人不及格。另外,。我会雇佣任何一个不正确的程序员,只是为了在下一秒解雇他或她。现在,正确处理除以2和位移位的细微差别,那是另外一回事了。@SevaAlekseyev为什么在面试中询问模糊的语言相关“特征”很重要?@Chris Jester Young和math.pow()。对于FP来说,这个问题似乎比int更有趣(我的意思是对于int来说,这真的很简单),我假设我们将推广到浮点,因为math.pow是一个选项。而且因为整数的大小写没有意思。+1代表2k,现在您不必再获得编辑权限。:)我现在觉得自己很愚蠢;这很有道理!非常感谢你@纳曼:看来你不喜欢任何一个移位的答案。这是有原因的吗?这看起来更像是试图计算2*userNumber,而不是2^userNumber。因为电源初始化为零,所以总是生成零。@IronMensan这个程序生成2^userNumber。在每个循环中,pow是2^计数器,因为2^n=(2^(n-1)+2^(n-1))。您在留下该注释前3分钟对其进行了编辑。不酷,第一次发布时是一次可怕的失败。
pow = 1;
while(userNumber > counter){
pow = pow+pow;
counter++;
}