请高手帮忙,用c语言计算2的n次方,最大到2的64次。

如题所述

int型是不够的,ls都是用的int型,只能算30位左右,远远没有达到lz的要求。我开了__int64型(vc++编译器),可以计算64位整数,但是这个还是不能算到64,我的程序最大62位,我用了移位,这样高效。如果你一定要64位甚至更高的话,那就必须用数组来模拟乘法了。
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
printf("%I64d\n",((__int64)1)<<n);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-22
63位,用unsigned long long(32位机)型或者unsigned long(64位机)型。

参考(32位机 C99标准)

unsigned long long fun(unsigned int n)
{
return n >= 64 ? 0 : 0x1ULL << n;
}
第2个回答  2010-08-22
如果 zhu4800448 程序中用

printf("%I64u\n",((__int64)1)<<n);

输出的话,那精度可以达到2的63次方
第3个回答  2010-08-22
#include "iostream"
using namespace std;
int main()
{
int s=1;
for(int i=0;i<64;i++)
cout<<s*2<<endl;
return 0;
}