#include
#include
#include
main()
{
clock_t start, end;
double duration;
start = clock();//记录此时的时间,单位为微秒
int ival, n = 0;
char bin[32];
scanf("%d", &ival);
while(ival >0) {
bin[n++] = ival & 0x01;
ival >>= 1;
}
for(n--; n >= 0; n--)
printf("%d", bin[n]);
printf("\n");
end = clock();
duration = (double)(end-start)/CLOCKS_PER_SEC;
printf("%lf\n",duration);
return 0;
}
程序里添加了时间变量用以比较两个程序的效率差异,bin[n++] = ival & 0x01;可能只有这条要解释一下, 因为当时我也没明白过来。0x01在内存里面是00000001 这个和ival按位与计算把最后一位保存。
他的精简版:
#include
int main()
{ int a,i;
i=sizeof(int)*8;
for(scanf("%d",&a);i>0;i--,printf("%d",a>>i&1)); //强
printf("\n");
}
下一个:
#include
#include
#include
main()
{
clock_t start, end;
double duration;
start = clock();
int ival, n = 0;
char bin[64];
scanf("%d", &ival);
while(ival>0)
{
bin[n++] = ival % 2;
ival /= 2;
}
for(n--; n>=0; n--)
printf("%d", bin[n]);
printf("\n");
end = clock();
duration = (double)(end-start)/CLOCKS_PER_SEC;
printf("%lf\n",duration);
return 0;
}
这个大家应该都会明白了,只是一些细节要小心了。
阅读(2235) | 评论(0) | 转发(0) |