32位系统 模拟实现64位加法

ruoge2007 2008-11-15 02:27:35
实现函数Add


typedef struct
{
DWORD hi32;
DWORD lo32;
} *PtrData64;

PtrData64 Add( PtrData64 a, PtrData64 b)
{
//此处填写代码实现,存储在a中;
}


主要是考虑是否会有低位的溢出呢。
...全文
409 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzfxyer 2008-11-15
  • 打赏
  • 举报
回复
用数组实现,
你让每个元素的最大数,不要超过一个数,超过就进位。
就不会有溢出了。
即使像你那样用,也要多用几个,每个里面不要超过比如:1000000
就可以控制进位了。
yanhang1589 2008-11-15
  • 打赏
  • 举报
回复
希望对楼主有帮助!!
yanhang1589 2008-11-15
  • 打赏
  • 举报
回复
下面是我写的加法1024位的,你看看
#include<iostream>
#include<string>
#include<algorithm>
const int N=1024;
using namespace std;
//大整数的加法-----------------------------------------------------------------------------------
void add(int *a,int *b,int*c)
{
int k=0;//进位值由K表示----------------------------------------------------------------------
for(int i=0;i<N;i++)
{
c[i]=a[i]+b[i]+k;
if(c[i]>=10)
{
c[i]-=10;
k=1;
}
else
k=0;
}
}
//输出计算结果-----------------------------------------------------------------------------------
void print(int* c)
{
int k=0;
for(int i=N-1;i>=0;i--)
if(c[i]!=0)
{
k=i;
break;
}
if(k)
{
for(int i=k;i>=0;i--)
cout<<c[i];
cout<<endl;
}
else
cout<<c[0];


}
//从键盘读入大整数----------------------------------------------------------------------------------
void read_big_int(int*a)
{
string str1;
cin>>str1;
reverse(str1.begin(),str1.end()); //将从键盘输入的数字反向,要头文件#include<algorithm>----------
for(int i=0;i<str1.length();i++) //A[0]为个位,A[1]为十位......----------------------------
a[i]=(int)(str1[i]-'0'); //将字符串的数字转化为对应的整形数字-----------------
for(int i=str1.length();i<N;i++) //初始化未被赋值的数组元素-----------------------------------
a[i]=0;
}
//-------------------------------------------------------------------------------------------------
void main()
{
int* a=new int[N];
int* b=new int[N];
int* c=new int[N];

cout<<"输入大整数a=";
read_big_int(a);
cout<<"输入大整数b=";
read_big_int(b);

for(int i=0;i<N;i++)
c[i]=0;//对用来存储结果的数组初始化--------------------------------------------------

add(a,b,c);
cout<<"\na+b=";print(c);
delete []a;
delete []b;
delete []c;
system("pause");
}
ruoge2007 2008-11-15
  • 打赏
  • 举报
回复
大家给个答案啊
bind888 2008-11-15
  • 打赏
  • 举报
回复
oo
android2008 2008-11-15
  • 打赏
  • 举报
回复
oo

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧