重金悬赏,如何判断一个整数有多少位???(暂时不用考虑超大整数的问题)
程序代码:
#include <stdio.h>
#include <math.h>
#include <string.h>
int nbits_1(int source)
{
int bit=0;
while(source)
{
source/=10;
bit++;
}
return bit;
}
int nbits_2(int source)
{
return (int)log10((double)source)+1;
}
int nbits_3(int source)
{
char t[20]={'\0'};
sprintf(t,"%d",source);
return (int)strlen(t);
}
int nbits_3_1(int source)
{
char t[20]={'\0'};
return sprintf(t,"%d",source);
}
int nbits_3_2(int source)
{
return printf("%d",source);
}
int nbits_4(int source)
{
int count=1;
while (source/(int)pow(10.00,count)>=1) count++;
return count;
}
int nbits_5(int source)
{
if(source>=0 && source<10) return 1;
if(source>=10 && source<100) return 2;
if(source>=100 && source<1000) return 3;
if(source>=1000 && source<10000) return 4;
if(source>=10000 && source<100000) return 4;
if(source>=100000 && source<1000000) return 6;
//............
}
int main(void)
{
int p=888999;
printf("1.bits=%d\n",nbits_1(p));
printf("2.bits=%d\n",nbits_2(p));
printf("3.bits=%d\n",nbits_3(p));
printf("3_1.bits=%d\n",nbits_3_1(p));
printf("3_2.bits=%d\n",nbits_3_2(p));
printf("4.bits=%d\n",nbits_4(p));
printf("5.bits=%d\n",nbits_5(p));
return 0;
}
我不知道利用位运算 是否能弄出来 是否还有其他的方法
[ 本帖最后由 wp231957 于 2014-7-24 10:29 编辑 ]






我也没看楼主的代码 就看到了bit这个词