【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱: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)乘法呢?除法呢?

一步一步写算法(之大数计算)相关推荐

  1. 一步一步写算法(之图结构)

    原文:一步一步写算法(之图结构) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 图是数据结构里面的重要一章.通过图,我们可以判断两个点之间是 ...

  2. 一步一步写算法(之prim算法 中)

    原文:一步一步写算法(之prim算法 中) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] C)编写最小生成树,涉及创建.挑选和添加过程 MI ...

  3. 一步一步写算法(之寻找丢失的数)

    一步一步写算法(之寻找丢失的数) 原文:一步一步写算法(之寻找丢失的数) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 假设我们有一个1亿个 ...

  4. 一步一步写算法(之克鲁斯卡尔算法 中)

    一步一步写算法(之克鲁斯卡尔算法 中) 原文:一步一步写算法(之克鲁斯卡尔算法 中) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 前面说到 ...

  5. 一步一步写算法(之prim算法 下)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 前两篇博客我们讨论了prim最小生成树的算法,熟悉了基本的流程.基本上来说,我们是按照自上而下 ...

  6. 一步一步写算法(开篇)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 算法是计算机的生命.没有算法,就没有软件,计算机也就成了一个冰冷的机器,没有什么实用价值.很多 ...

  7. 编程题C语言写牛牛数星星,一步一步写算法(之“数星星”)

    原文: 一步一步写算法(之"数星星") [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 学过编程的朋友都知道,当初为了学习 ...

  8. 一步一步写算法(之 算法总结)【转】

    转自:http://blog.csdn.net/feixiaoxing/article/details/6993718 版权声明:本文为博主原创文章,未经博主允许不得转载. [ 声明:版权所有,欢迎转 ...

  9. 一步一步写算法(之 算法总结)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 自10月初编写算法系列的博客以来,陆陆续续以来写了几十篇.按照计划,还有三个部分的内容没有介绍 ...

  10. 一步一步写算法(之排序二叉树删除-1)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 相比较节点的添加,平衡二叉树的删除要复杂一些.因为在删除的过程中,你要考虑到不同的情况,针对每 ...

最新文章

  1. 元宇宙和游戏赚钱的兴趣正与日俱增
  2. 【sas proc sql】coalesce
  3. 杂项相关工具的使用方法(边刷题边更新...)
  4. 阿里DataV可视化大屏介绍
  5. mysql rtree_优化体系--MySQL 索引优化(full-text、btree、hash、rtree)
  6. 网站时间日期代码html,显示网站运行时间及当前时间的代码
  7. Embedded ProC(嵌入式ProC)与Tuxedo中间件
  8. 北理工网络安全导论作业:DES算法
  9. CI框架工作原理浅析
  10. Assimp库代码存档
  11. 世界各国浏览器语言代码本地化对照表
  12. 你画我猜---websocket
  13. 黑客帝国角色 之 先知的另类解读
  14. 2021-05-29 DOM元素的属性和操作:节点非内置属性,节点增删改查,cssDOM设置行内样式与非行内样式等
  15. Faceboxes pytorch代码解读(一) box_utils.py(上篇)
  16. 波兰计算机专业大学排名,波兰留学大学排名
  17. 2411681-88-2,Thalidomide-O-PEG4-NHS ester它与胺部分反应
  18. poi对word读取(文本和图片)、修改、保存操作及word转换为PDF
  19. 三星android se干啥得,结果竟然这样!看iPhone SE与最强Android旗舰三星S7对比!
  20. linux查看磁盘使用情况(一)

热门文章

  1. 从 Microsoft Dynamics CRM 4.0 server迁移到 Microsoft Dynamics CRM 2013 Server
  2. iOS:×××送(二)----pem证书的生成
  3. 如何通过页面静态化提升论坛性能
  4. base64和hex
  5. JS模拟实现数组的map方法
  6. 团队DevOps实践之一
  7. 给RabbitMQ发送消息时,设置请求头Header。
  8. linux 虚拟机设置好固定ip 修改了 dns 网络需要设置成桥接模式
  9. oracle海量数据中提升创建索引的速度
  10. 2014-07-24 .NET实现微信公众号的消息回复与自定义菜单