最近在写大数四则运算的作业,发现网上有很多相关的算法,有3位作四则运算的,也有仿造计算机做移位运算的,当然,有仿照手工运算的算法。
最好的算法应该可以参考python的大数运算,不过本人还是自己实现仿手工运算的算法:好用、简单。
/*****************************************************************
*
* Big number add/minus/multiply/divide
* Copyright: Free
* Author: Hou Hongwei
*
*
****************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void reverse(char *in, char *out, int len)
{
int i, j;
i = 0;
j = len;
while (i < len && j >= 0)
{
out[i++] = in[--j];
}
out[len] = '\0';
//printf("reverse from %s to %s\n", in, out);
}
void trim(char *inout, int *len)
{
int i;
i = (*len) - 1;
while (inout[i] == '0')
{
if(i > 0) inout[i] = 0;
i--;
}
(*len) = i + 1;
}
int is_bigger(char *x, char *y)
{
int i, j;
int xlen, ylen;
xlen = strlen(x);