李美熹 SPACE


又一个WordPress站点

首页 >全部文章 > 正文内容
1:大数相加(函数实现) 【编程笔记】大数运算-二进制笔记本

描述:
所谓的大数铁列克提,就是很长很长的数,形如:66666666666666666666666666。
大数相加就是两个很长很长的数加起来的运算。
分析:
我们要编写一个加法运算的小程序,用什么类型呢?int吗?

结果呢(错误,由于int型数据取值范围-2147483648~2147483647)

所以要用到一个新的数据类型来存放他卡那瓦罗,并且定义其运算,我们不妨先用函数的方法来实现“加法”这个功能。
思来想去欲霸天下,就字符串这个类型比较靠谱,将字符串每一位的元素当做大数的每一位数。
基本思路:低位开始逐位相加,满10进位(取膜并用一变量记录进位情况),高位运算前对于进位来的1八点半明月珰,有则加无则正常运算。
特殊情况:最高位有进位。解决方法——字符串前+‘1’。
实现(函数plus(string num1,string num2)):
不妨用第一个加数作为最后的输出,若加数长度不等,则将两者置换。

变量声明

在获取字符串位数时我想的是将字符串通过强制类型转换为int型(然而郭梓文。。),字符串'0'转换后是48,必然出错!姬云飞 这里有个很巧妙的办法(是因为自己不会),将字符类型某元素(数值为n)-'0',等于'n'-'0',获取该元素的整数值;将int型某元素+'0',等于n+'0'老莫西饼 ,获取该数字的字符型表示。

最后处理进位(即数1扫描完毕 flag扔为1,则需扩展一位)

结果:

反思:
思考过程中的瓶颈:
1进位处理(flag作为运算的一部分)
2结果超过预定位数(字符串前运算 + '1')
3将短位数字与长位数字对齐(用0补齐)
问题:
1减法又如何实现健一公馆?
2推而广之,一般情况下的大数类如何实现?
上一篇:2006霍金北京演讲回顾:宇宙的起源-天狼星天文 下一篇:面板开关

繁华落尽 转瞬即逝

我们需要透过一系列的训练来突破关卡,我们需要达到一个不受到过去历史的羁绊的心境,透过这样的心境,进而引导成为一个适合进行前进到战士人,我们需要成为一个完美无缺的战士,我们的目标是遵循着力量进入无限的领域和穿越!