我正在看实现整数幂函数pow(int,int)的最有效方法。
这是他们得到的答案。
我正在尝试使其适用于C#,但是我遇到了比较int
和bool
等问题。. . .我无法弄清楚为什么他们要比较& 1
,那不是意味着真吗?这有什么意义。它似乎不高效。
int ipow(int base, int exp)
{
int result = 1;
while (exp)
{
if (exp & 1)
result *= base;
exp >>= 1;
base *= base;
}
return result;
}
我在比较中使用了 ==
,但是那个1还在那里,我不知道是否需要它。
有人知道 if (exp & 1)
中的1是用来干什么的吗?或者我是否需要它?我看不出有什么用处。