【大整数运算】 大整数的存储 | 高精度加法 | 高精度减法

本文介绍了大整数的存储方式,通过整型数组存储每位数字,高位在前,低位在后。接着讲解了高精度加法和减法的实现,加法要求非负数,减法需注意被减数大于减数。文章提供完整的代码实现,并引用了《算法笔记》作为参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大整数,又称为高精度整数,其含义就是用基本数据类型无法存储其精度的整数。

不严谨地说就是位数很多很多的数

 

大整数的存储

用整型数组存储每一位数,如将整数1987存储到数组中,则有a[0]=7,a[1]=8,a[2]=9,a[3]=1。即整数的高位存储在数组的高位,整数的低位存储在数组的低位。因为在运算的时候,都是从低位到高位进行枚举,这样存储符合习惯。在用字符串读入的时候,需要另存在另一个数组,并反转一下。

为了方便,定义一个结构体来存储数组和长度。还是为了方便,会在结构体定义一个“构造函数”来初始化。

这里稍微回顾一下构造函数——

构造函数就是用来初始化结构体的一种函数,它直接定义在结构体中。它不需要写返回类型,且函数名和结构体名相同。通常一个普通定义的结构体,其内部会生成一个默认的构造函数,所以才可以直接定义内部定量而不初始化。如果重新定义了构造函数,默认函数被覆盖,则不能不经初始化就定义结构体变量。为了两者兼得,可以自定义构造函数的同时,手动加上默认函数。

struct node
{
	int id;
	char gender;
	int age;
	//默认函数,用以不初始化就定义结构体变量 
	node(){}
	//带参数gender的函数 
	node(char _gender)
	{
		gender = _gender;
	}
	//三全部初始化的函数 
	node(int _id,int _age,char _gender)
	{
		id = _id;
		age = _age;
		gender = _gender;
	}
}; 

//使用
node no;
node no = node('f');
node no = node(123,99,'f'); 

好了回到正事。大整数的结构体长这样↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值