题目
问题描述
给定一个十进制整数,返回其对应的二进制数的位数。例如,输入十进制数9,其对应的二进制数是1001,因此位数是4。
样例输入
一个满足题目要求的输入范例。
9
样例输出
与上面的样例输入对应的输出。
思路
解这道题我们可以用死循环一直判断2的i次方是否大于n,如果大于n,则二进制的位数一定是此时的i,因为我们是从2的0次开始的,所有实际运行显示的位数为i-1个。个人觉得应该属于比较优的解了。
代码
#include <stdio.h>
#include<math.h>
int main()
{
int n,i;
scanf("%d",&n);
for(i=0;;i++){
if(pow(2,i)>n){
printf("%d\n",i);
break;
}
}
return 0;
}
结果:
9
4
--------------------------------
Process exited after 1.452 seconds with return value 0
请按任意键继续. . .