如何用C语言编写高精度整数加法函数?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1025个文字,预计阅读时间需要5分钟。
先聊聊高精度运算的概念:是指参与运算的数与运算结果的范围大大超出了标准数据类型(如整型、浮点型)能表示的范围,需要使用特殊的算法和数据结构来处理。例如,求两个200位的数的和,这时就要使用高精度运算来保证结果的准确性。
先说说高精度运算的概念:
是指参与运算的数(加数,减数,因子……)范围大大超出了标准数据类型(整型,实型)能表示的范围的运算。例如,求两个200位的数的和。这时,就要用到高精度算法了。(摘自百度百科)。
再往下看之前,大家先列竖式计算35+86。注意的问题: (1)运算顺序:两个数靠右对齐;从低位向高位运算;先计算低位再计算高位; (2)运算规则:同一位的两个数相加,然后再加上从低位来的进位,成为该位的和;
这个和再去掉向高位的进位就成为该位的值;如上例:3+8+1=12,向前一位进1,本位的值是2;
可借助MOD、DIV运算完成这一步; (3)最后一位的进位:如果完成两个数的相加后,进位位值不为0,则应添加一位; (4)如果两个加数位数不一样多,则按位数多的一个进行计算;
基本思路:
1. 先将从键盘输入的两个数分别存入两个char型的字符数组,然后再将两个char数组的数据转存入两个int型的数组。
这一功能的代码如下:
for (i=0;i<=a1_len-1;i++) { a[a1_len-i]=a1[i]-48; //将操作数放入a数组 } for (i=0;i<=b1_len-1;i++) { b[b1_len-i]=b1[i]-48; //将操作数放入b数组 }数字存入char型数组,要存入int型数组,需要减去48,可以查看ascii码表。道理如同大写字母变小写字符需要加32是一样的。
本文共计1025个文字,预计阅读时间需要5分钟。
先聊聊高精度运算的概念:是指参与运算的数与运算结果的范围大大超出了标准数据类型(如整型、浮点型)能表示的范围,需要使用特殊的算法和数据结构来处理。例如,求两个200位的数的和,这时就要使用高精度运算来保证结果的准确性。
先说说高精度运算的概念:
是指参与运算的数(加数,减数,因子……)范围大大超出了标准数据类型(整型,实型)能表示的范围的运算。例如,求两个200位的数的和。这时,就要用到高精度算法了。(摘自百度百科)。
再往下看之前,大家先列竖式计算35+86。注意的问题: (1)运算顺序:两个数靠右对齐;从低位向高位运算;先计算低位再计算高位; (2)运算规则:同一位的两个数相加,然后再加上从低位来的进位,成为该位的和;
这个和再去掉向高位的进位就成为该位的值;如上例:3+8+1=12,向前一位进1,本位的值是2;
可借助MOD、DIV运算完成这一步; (3)最后一位的进位:如果完成两个数的相加后,进位位值不为0,则应添加一位; (4)如果两个加数位数不一样多,则按位数多的一个进行计算;
基本思路:
1. 先将从键盘输入的两个数分别存入两个char型的字符数组,然后再将两个char数组的数据转存入两个int型的数组。
这一功能的代码如下:
for (i=0;i<=a1_len-1;i++) { a[a1_len-i]=a1[i]-48; //将操作数放入a数组 } for (i=0;i<=b1_len-1;i++) { b[b1_len-i]=b1[i]-48; //将操作数放入b数组 }数字存入char型数组,要存入int型数组,需要减去48,可以查看ascii码表。道理如同大写字母变小写字符需要加32是一样的。

