求两32位数之和

来源:百度知道 编辑:UC知道 时间:2024/05/05 19:36:13
用c语言怎样实现两个32位数相加,求高手指点~~!!!

如果1楼的说的32为行的话那简单,如果是64位呢?
你可能想问大数相加的问题,就是所有的基本数据类型都不能满足你的要求,因为结果和位数都不够,给你个提示:
你可以自己定义一个数组,比如int a[100];你可以在
a[0]-a[99]每一个中放一位数字,打个比方,你想把123放在
a[3]这个数组中,你用a[0]存3,a[1]存2,a[2]存3,这样你便可以把任意位数的超大数字都寸在像a[n]这样的数组中,问题是你自己要定义一种加发的规则,有点像C++里边的运算符重载,比如:如果a[3]存的是999这个数,b[3]存的是888,你想把999与888加起来,设用sum[3]存放结果,你会 用
sum[0]=a[0]+b[0];
sum[1]=a[1]+b[1];
sum[2]=a[2]+b[2];
但你会发现sum[0]==sum[1]==sum[2]=17
你如果输出的话会变成171717或717171这样的数字,所以你就要想办法进位,像这样
if(sum[i]>=10)
{
sum[i]=sum[i]-10;
sum[i+1]=sum[i+1]+1;
}
这样就OK了,方法知道了,剩下的留给你吧!

32位数?

定义为双精度不就行了?

用两个char数组,数组长度根据你需要的位数决定,然后如果只是加法那么就加多一个作为进位的BUFFER,每次位运算完就把进位量储存到BUFFER加到下一位去。

这样你要多长大多长的整数数都能实现, 其实如果是浮点, 可以把浮点数看作一个整数乘以10e-n那么就可以作为整数处理