计算机内部用二进制来表达所有的值。一个十进制的数字,比如24,在一个32位的计算机内部被表达为00000000000000000000000000011000。可以看到,从左边数过来,在第一个1之前,有27个0。我们把这些0称作前导的零。
现在,你的任务是写一个程序,输入一个整数,输出在32位表达下它前导的零的个数。
输入格式:
一个整数,在32位的整数可以表达的范围内。
输出格式:
一个整数,表达输入被表达为一个32位的二进制数时,在第一个1之前的0的数量。
输入样例:
256
输出样例:
23
作者
翁恺
单位
浙江大学
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
编译器 (1)
C (gcc)
#include <stdio.h>
int main(void) //如果不需要从命令行中获取参数,请用int main(void);否则请用int main(int argc, char *argv[])
{
long int input,temp=1,count=0;
scanf("%ld",&input); // &
while(temp<=input){
count++;
temp*=2;
}
if(input<0){
printf("0");
}else{
temp=32-count;
printf("%d",temp);
}
return 0;
}
#include <stdio.h>
int judge(int input)
{
int cnt = 0;
if (input<0)
return 32;
while(input != 0){
cnt ++;
input = input>>1;
}
return cnt;
}
int main(void)
{
long int input;
int cnt=0;
scanf("%ld",&input);
printf("%d",32-judge(input));
}