大数的运算思想

本文介绍了使用C语言实现大数运算的方法,包括大数的存储方式(双向链表),详细阐述了大数加法、减法、乘法、除法和幂运算的实现过程,以及在处理过程中需要注意的问题,如位数比较、进位处理和结果的逆序输出等。
摘要由CSDN通过智能技术生成

    一、数字储存的实现

           大数计算的因数和结果精度一般是少则数十位,多则几万位。在C/C++语言中定义的类型中精度最多只有二十多位,因而我们采取用链表存贮的方式来存放大数。在计算中会用到从高位开始计算,和从低位开始计算数值的两种情况。所以我们将链表定义为双向链表,其中为一个单元来存贮数据,一个指针指向前方的数据,另一个指向后的数据。其结构为:

struct Node  // 定义一个双向链表用来存贮结果
{     char data;    // 数据*定义为字符的原因:要显示负号
     Node *next;   // 尾指针
    Node *ahead;   // 首指针
};

  二、大数加法运算的实现

e.g

   处理中注意的问题:

          1、必须判断出操作数A、B的长度,以位长的一个作为循环基础。

         2、最后一位(最高位)的运算中,若进位不为0,则需增设多一个存储结点。

  三、减法运算的实现

      算法也是从低位开始减。先要判断减数和被减数那一个位数长,减数位数长是正常减;被减数位数长,则被减数减减数,最后还要加上负号;两数位数长度

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值