我想找到与最近2^I值与输入“N”(参见下面的代码段),因为现在它只是被在我打= I ,而我希望它输出的是“我”,这会给我最近的2 ^我WRTň...发现最近的2^I值整数n
#include<iostream>
#include<math.h>
using namespace std;
int main()
{long n;
int i,t;
cin>>t;
while(t--)
{cin>>n;
for(i=1;i<30;i++)
{
if(pow(2,i)<=n<=pow(2,i+1))
break;
}cout<<pow(2,i);
}
}
请详细说明你的问题。对于某些指定的输入,您的预期和实际输出是什么?请修改您的问题以包含该信息(另请[请阅读如何提出良好问题](http://stackoverflow.com/help/how-to-ask))。 –
但是,你的问题的一个很好的候选人是表达式'pow(2,i)<= n <= pow(2,i + 1)'。 C++不是数学,你不能像数学一样使用条件。表达式'pow(2,i)<= n <= pow(2,i + 1)'并没有真正达到你期望的效果。 –
只有少数提示你不需要pow或者甚至是log2 ...为什么不使用bit-shift直到它碰撞翻转n比较? – Spektre