大整数的运算---高精度加法与高精度减法

2024-03-30 02:32

本文主要是介绍大整数的运算---高精度加法与高精度减法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

高精度加法

思路:将该数的两个数字与进位端相加,得到的结果取个位数作为该位结果,取十位数作为新的进位

代码实现

begin add(begin a,begin b)
{int carray=0;//carray是进位begin c;for(int i=0;i<a.len||i<b.len;i++)//以较长的为界限{int temp=a.d[i]+b.d[i]+carray;//两个对应位与进位相加c.d[c.len++]=temp%10;//个位数为该结果carray=temp/10;//十位数为新的进位端}if(carray!=0)//如果最后进位不为0,则直接赋给结果的最高位{a.d[c.len++]=carray;}return c;
}

高精度减法

思路:对于 某一步,比较被减位和减位,如果不够减,则令被减位的高位减1,被减位加10在进行减法;如果能够减,则直接减。但最后要注意减法后高位可能有多余的0,要去除它们,但是也要保证结果至少有一位数。

代码实现

begin sub(begin a,begin b)
{begin c;for(int i=0;i<a.len||i<b.len;i++){if(a.d[i]<b.d[i]){a.d[i+1]--;//向高位借位a.d[i]+=10;//当前位加10}c.d[c.len++]=a.d[i]-b.d[i];//减法结果为当前位结果}while(c.len-1>=1&&c.d[len-1]==0){c.len--;//去除最高位的0,同时至少保留一位最低位}return c;
}

这篇关于大整数的运算---高精度加法与高精度减法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/860276

相关文章

代码随想录算法训练营第三十九天|62.不同路径 63. 不同路径 II 343.整数拆分 96.不同的二叉搜索树

LeetCode 62.不同路径 题目链接:62.不同路径 踩坑:二维的vector数组需要初始化,否则会报错访问空指针 思路: 确定动态数组的含义:dp[i][j]:到达(i,j)有多少条路经递推公式:dp[i][j] = dp[i-1][j] + dp[i][j-1]初始化动态数组:dp[0][0] = 1遍历顺序:从左到右,从上到下 代码: class Solution {pu

运算放大器(运放)低通滤波反相放大器电路和积分器电路

低通滤波反相放大器电路 运放积分器电路请访问下行链接 运算放大器(运放)积分器电路 设计目标 输入ViMin输入ViMax输出VoMin输出VoMaxBW:fp电源Vee电源Vcc–0.1V0.1V–2V2V2kHz–2.5V2.5V 设计说明 这款可调式低通反相放大器电路可将信号电平放大 26dB 或 20V/V。R2 和 C1 可设置此电路的截止频率。此电路的频率响应与无源 RC 滤

无法解决 equal to 运算中 Chinese_PRC_90_CI_AS 和 Chinese_PRC_BIN 之间的排序规则冲突

这是因为数据库 oa 和 hh 的编码格式不一样导致的 select  groupname as oper_id,name as oper_name from security_users where name collate Chinese_PRC_CI_AS not in (select oper_name from PDA_UsersAndPWD )

4、SpringMVC 实战小项目【加法计算器、用户登录、留言板、图书管理系统】

SpringMVC 实战小项目 3.1 加法计算器3.1.1 准备⼯作前端 3.1.2 约定前后端交互接⼝需求分析接⼝定义请求参数:响应数据: 3.1.3 服务器代码 3.2 ⽤⼾登录3.2.1 准备⼯作3.2.2 约定前后端交互接⼝3.2.3 实现服务器端代码 3.3 留⾔板实现服务器端代码 3.4 图书管理系统准备后端 3.1 加法计算器 需求: 输⼊两个整数, 点击"点

java编程:命令行输入的三个整数判断是否构成三角形,不能就抛异常。

写一个方法void sanjiao(int a,int b,int c),判断三个参数是否能构成一个三角形,如果不能则抛出 异常IllegalArgumentException,显示异常信息“a,b,c不能构成三角形”, 如果可以构成则显示三角形三个边长,在主方法中得到命令行输入的三个整数,调用此方法,并捕获异常。 附源代码: package 异常;public class Sa

输入一个整数,判断其是否是2^n,是就输出这个数,不是就输出和它最接近的为2^n的那个整数。

输入一个整数,判断其是否是2^n,若是,输出这 //个数,若不是,输出和它最接近的为2^n的那个整数。 附加源代码1: #include<stdio.h>#include<stdlib.h>#include<math.h>int main(){int input;//键盘输入一个整数inputint i,j;//i,j待会儿存放input与左边和右边的为2^n的差值int m

C语言编程:从键盘中输入一个数字,返回值为整数有效位数

//从键盘中输入一个数字(可以包含小数点,其位数在60位以下,求其整数的有效位数,如输入 //0123.456,返回值为整数有效位数为3) //1) 输入数据为浮点型,不用数组,不用字符串,只有变量的算术运算实现此功能。 #include<stdio.h>int main(){int weiShu = 0;//计算位数的变量初始化为0;float num;//控制台输入的数字in

一个整数使用英文表达的字母计数

题目: 把1到5写成英文单词分别是:one、two、three、four、five。这些单词一共用了3+3+5+4+4 = 19 个字母。 如果把1到1000都写成英文单词,一共要用多少个字母? 注:不计入空格和连字符,例如,342,three hundred and forty-two, 包含23哥字母,而115(one hundred and fifteen)包含20个字母。单词“and

不使用判断比较符比较两个整数的大小(位运算)

在不使用判断操作符和比较操作符情况下判断两个整数的大小, 关于C# 的运算符可以查看官方说明: https://msdn.microsoft.com/zh-cn/library/xt18et0d(v=vs.80).aspx int Min(int a ,int b){int c =a-b;int sa=sign(a);int sb=sign(b);int sc=sign(

VFB电压反馈和CFB电流反馈运算放大器(运放)选择指南

VFB电压反馈和CFB电流反馈运算放大器(运放)选择指南 电流反馈和电压反馈具有不同的应用优势。在很多应用中,CFB和VFB的差异并不明显。当今的许多高速CFB和VFB放大器在性能上不相上下,但各有其优缺点。本指南将考察与这两种拓扑结构相关的重要考虑因素。 VFB和CFB运算放大器的直流及运行考虑因素 VFB运算放大器 对于要求高开环增益、低失调电压和低偏置电流的精密低频应用,VFB运算放