我一直试图找到一个最小的2的幂数,刚好小于给定的数字。例如,给定的数字:64输出:64;给定数字63输出:32,给定数字127,输出:64。我一直在尝试解决很大的数字。我得到了错误的答案
我已经使用log函数来实现该问题。另外,我使用了位操作,但是输出错误。
long double nextPower(long double n)
{
long double pos = floor(log2(n));
return pos;
}
int main()
{
long double n;
cin >> n;
cout << nextPower(n) << endl;
}
这给我7、8的正确输出。但是,当我接受大量输入时,例如576460752303423487,它仅比电源59的2小1。我得到了错误的输出。预期产量:58实际产量:59