一步一步写算法(之大数计算)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
我们知道在x86的32位cpu上面,int表示32位,如果核算成整数的话,大约是40多亿。同样,如果在64位cpu上面,能表示的最大整数就是64位二进制,表示的数值要大得多。那么在32位如果想表示大整数怎么办呢?那只能靠我们自己想办法了。
首先我们回顾一下我们手算整数的加减、乘除法是怎么做到的:
(1)记住9*9之间的乘法口诀
(2)记住个位与个位之间的加减法
(3)所有乘法用加法和左移位表示,所有的减法用减法和右移位表示
明白上面的道理之后,我们就可以自己手动写一个大整数的加法了:
int* big_int_add(int src1[], int length1, int src2[], int length2)
{int* dest = NULL;int length;int index;int smaller;int prefix = 0;if(NULL == src1 || 0 >= length1 || NULL == src2 || 0 >= length2)return NULL;length = length1 > length2 ? (length1 + 1) : (length2 + 1);dest = (int*)malloc(sizeof(int) * length);assert(NULL != dest);memset(dest, 0, sizeof(int) * length);smaller = (length2 < length1) ? length2 : length1;for(index = 0; index < smaller; index ++)dest[index] = src1[index] + src2[index];if(length1 > length2){for(; index < length1; index++)dest[index] = src1[index];}else{for(; index < length2; index++)dest[index] = src2[index];}for(index = 0; index < length; index ++){dest[index] += prefix; prefix = dest[index] / 10;dest[index] %= 10;}return dest;
}
上面算法最大的特点就是:计算的时候没有考虑10进制,等到所有结果出来之后开始对每一位进行进制处理。
讨论:
看到上面的算法之后,大家可以考虑一下:
(1)减法应该怎么写呢?
(2)乘法呢?除法呢?
一步一步写算法(之大数计算)相关推荐
- 一步一步写算法(之图结构)
原文:一步一步写算法(之图结构) [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 图是数据结构里面的重要一章.通过图,我们可以判断两个点之间是 ...
- 一步一步写算法(之prim算法 中)
原文:一步一步写算法(之prim算法 中) [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] C)编写最小生成树,涉及创建.挑选和添加过程 MI ...
- 一步一步写算法(之寻找丢失的数)
一步一步写算法(之寻找丢失的数) 原文:一步一步写算法(之寻找丢失的数) [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 假设我们有一个1亿个 ...
- 一步一步写算法(之克鲁斯卡尔算法 中)
一步一步写算法(之克鲁斯卡尔算法 中) 原文:一步一步写算法(之克鲁斯卡尔算法 中) [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前面说到 ...
- 一步一步写算法(之prim算法 下)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前两篇博客我们讨论了prim最小生成树的算法,熟悉了基本的流程.基本上来说,我们是按照自上而下 ...
- 一步一步写算法(开篇)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 算法是计算机的生命.没有算法,就没有软件,计算机也就成了一个冰冷的机器,没有什么实用价值.很多 ...
- 编程题C语言写牛牛数星星,一步一步写算法(之“数星星”)
原文: 一步一步写算法(之"数星星") [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 学过编程的朋友都知道,当初为了学习 ...
- 一步一步写算法(之 算法总结)【转】
转自:http://blog.csdn.net/feixiaoxing/article/details/6993718 版权声明:本文为博主原创文章,未经博主允许不得转载. [ 声明:版权所有,欢迎转 ...
- 一步一步写算法(之 算法总结)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 自10月初编写算法系列的博客以来,陆陆续续以来写了几十篇.按照计划,还有三个部分的内容没有介绍 ...
- 一步一步写算法(之排序二叉树删除-1)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 相比较节点的添加,平衡二叉树的删除要复杂一些.因为在删除的过程中,你要考虑到不同的情况,针对每 ...
最新文章
- 元宇宙和游戏赚钱的兴趣正与日俱增
- 【sas proc sql】coalesce
- 杂项相关工具的使用方法(边刷题边更新...)
- 阿里DataV可视化大屏介绍
- mysql rtree_优化体系--MySQL 索引优化(full-text、btree、hash、rtree)
- 网站时间日期代码html,显示网站运行时间及当前时间的代码
- Embedded ProC(嵌入式ProC)与Tuxedo中间件
- 北理工网络安全导论作业:DES算法
- CI框架工作原理浅析
- Assimp库代码存档
- 世界各国浏览器语言代码本地化对照表
- 你画我猜---websocket
- 黑客帝国角色 之 先知的另类解读
- 2021-05-29 DOM元素的属性和操作:节点非内置属性,节点增删改查,cssDOM设置行内样式与非行内样式等
- Faceboxes pytorch代码解读(一) box_utils.py(上篇)
- 波兰计算机专业大学排名,波兰留学大学排名
- 2411681-88-2,Thalidomide-O-PEG4-NHS ester它与胺部分反应
- poi对word读取(文本和图片)、修改、保存操作及word转换为PDF
- 三星android se干啥得,结果竟然这样!看iPhone SE与最强Android旗舰三星S7对比!
- linux查看磁盘使用情况(一)