C语言算法之大数计算

上传人:鲁** 文档编号:486088888 上传时间:2022-07-30 格式:DOCX 页数:2 大小:12.12KB
返回 下载 相关 举报
C语言算法之大数计算_第1页
第1页 / 共2页
C语言算法之大数计算_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《C语言算法之大数计算》由会员分享,可在线阅读,更多相关《C语言算法之大数计算(2页珍藏版)》请在金锄头文库上搜索。

1、我们知道在x86的32位cpu上面,int表示32位,如果核算成整数的话,大约是40多亿。同样,如果在64位cpu上面,能表示的最大整数就是64位二进制,表示的数值要大得多。那么在32位如果想表示大整数怎么办呢?那只能靠我们自己想办法了。首先我们回顾一下我们手算整数的加减、乘除法是怎么做到的:(1)记住9*9之间的乘法口诀(2)记住个位与个位之间的加减法(3)所有乘法用加法和左移位表示,所有的减法用减法和右移位表示明白上面的道理之后,我们就可以自己手动写一个大整数的加法了:view plaincopy to clipboardprint?1. int* big_int_add(int src1

2、, int length1, int src2, int length2) 2. 3. int* dest = NULL; 4. int length; 5. int index; 6. int smaller; 7. int prefix = 0; 8.9. if(NULL = src1 | 0 = length1 | NULL = src2 | 0 = length2) 10. return NULL; 11.12. length = length1 length2 ? (length1 + 1) : (length2 + 1); 13. dest = (int*)malloc(sizeo

3、f(int) * length); 14. assert(NULL != dest); 15. memset(dest, 0, sizeof(int) * length); 16.17. smaller = (length2 length1) ? length2 : length1; 18. for(index = 0; index length2) 22. for(; index length1; index+) 23. destindex = src1index; 24. else 25. for(; index length2; index+) 26. destindex = src2index; 27. 28.29. for(index = 0; index length; index +) 30. destindex += prefix; 31. prefix = destindex / 10; 32. destindex %= 10; 33. 34.35. return dest; 36. 上面算法最大的特点就是:计算的时候没有考虑10进制,等到所有结果出来之后开始对每一位进行进制处理。讨论:看到上面的算法之后,大家可以考虑一下:(1)减法应该怎么写呢?(2)乘法呢?除法呢?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 文学/艺术/历史 > 人文/社科

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号