计算机基础 超过8位后怎么表示

2^10=1024对应于十进制的4位,那么2^1000对于十进制的多少位呢?
背景系统为linux 64 位编译器

用数组存

#include<stdio.h>
#define N 1000

int cal(int v[],int x,int n)
{
    int i,j,k,cp,s;
    v[N-1]=1;
    s=N-2;
    for(i=1;i<n+1;++i){
        cp=0;
        for(j=N-1;j>s;--j){
            k=v[j]*x+cp;
            v[j]=k%10;
            cp=k/10;
        }
        while(cp){
            v[s--]=cp%10;
            cp=cp/10;
        }
    }
    return s;
}

int  main(void)
{
    int x,n,v[N],s,i;
    printf("请输入底数和指数:");
    scanf("%d%d",&x,&n);
    s=cal(v,x,n);
    printf("%d^%d=",x,n);
    for(i=s+1;i<N;++i){
        printf("%d",v[i]);
    }
    printf("\n");
    printf("结果共有%d位",N-s-1); 
    return 0;
}


img

利用公式a^n=10^(nlga),求有多少位,就是求nlga + 1的值,代入可得1000log2 + 1 = 302

2^1000 ≈ 10^301
简单的数学知识即可估算。这里用到一个性质:
log2(10)×log10(x)=log2(x)

3.321928×n=1000
解得n≈301