用C语言实现高精度乘法
在计算机科学中,高精度算法是指可以超出整数类型所能表示的范围进行计算的算法。例如,在C语言中,int类型变量最大只能表示2^31-1的整数,而long long int类型变量最大只能表示2^63-1的整数。如果需要计算更大的整数,就需要使用高精度算法。
本文将介绍如何用C语言实现高精度乘法。具体实现方法是先将两个大整数转换成字符串,再按照小学数学中的乘法规则进行计算。最后将结果转换回整数类型。
下面是代码实现:
#include <stdio.h>
#include <string.h>
#define MAXN 10000
struct bigInt {
int d[MAXN];
int len;
};
void init(struct bigInt *a) {
memset(a->d, 0, sizeof(a->d));
a->len = 0;
}
void fromString(struct bigInt *a, char str[]) {
init(a);
int l = strlen(str);
for (int i = l - 1, j = 0, t = 0; i >= 0; i--) {
t += (str[i] - '0') * pow(10, j++);
if (j == 4 || i ==