重金悬赏,如何判断一个整数有多少位???(暂时不用考虑超大整数的问题)
程序代码:
#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 编辑 ]