我的乘法分析
来源:互联网 发布:淘宝怎么修改折扣价 编辑:程序博客网 时间:2024/06/06 04:29
<span style="font-family: punctuation, 微软雅黑, Tohoma; font-size: 14px; line-height: 22px; background-color: rgb(36, 99, 157);"> </span><pre name="code" class="cpp"> 整型大数值存储: 最大整型 8Byte、64位的long型存储整数最大一般不超过20位,如果计算数据位数多于20,数就会溢出,得到错误的数。如何存储很多位数甚至是无穷位数的整数?用数组存储大数,即数组中每个单元存储0,1,2,3,4,5,6,7,8,9其中的某个数,数组单元中的数排成一定的次序,也可以表示一个数。 long a=9_223_372_036_854_775_807(19位)=9.223...x10^18; var b[1000]={9,2,2,3,0}; 组成的数值大小可以是:9.223 x 10^999;远远大于a的值。 数组可以是无限个单元的集合。用指针表示数组, 如int * p={……},数组索引方式读取数据 p[0]=?,p[1]=?,p[2]=?,p[3]=?, ……那数值大小可以为:????……一直可无限读取。但存储空间是有限的,所以并不是无限个单元,况且单元也占用空间。总之数组可以实现:表示很大的整型数值。 大数值运算: 如何实现数组所表示的大数值的乘法运算运算 ? 乘法运算规律1: 12345x345 = 4259025 1 2 3 4 5 ----------------5位 x 3 4 5 ----------------3位 ——————————————————————————————— + 5 10 15 20 25 + 4 8 12 16 20 + 3 6 9 12 15 1 2 3 5 4 2 --------------- 进位—————————————————————————————————— 4 2 5 9 0 2 5 ----------------7位<3+5=8; 乘法运算规律2: 两数相乘的积的位数小于等于此两数位数之和。例子如上。 乘法运算规律3: 两个数字之间的乘积最大为两位数。 如:1x2 =2 ------------1位 9x9=81 ------------ 2位 实现数组表示的大数值运算: 设 整数 N 无穷大 设两个大整型数值:123456789 , 987654321 存储在数组中,int a[N]={1.2.3.4.5.6.7.8.9} , b[N]={9,8,7,6,5,4,3,2,1} ; int c[2N]={0}; //计算每个算术位上的值之和 for(int i=0;i<N;i++} for(int j=0;j<N;j++) c[i+j] + = a[i] * b[j]; //处理结果集,得到正确的数 for(int i=0; i<2*N;i++) { c[i+1] + = c[i] / 10 ; //进位 c[i] = c[i] % 10 ; //余位 } 依次读取数组 c 每个单元的数,排成的数即为两大数乘积。 存在问题:浪费内存,如果动态的分配,可以实现控制内存和设置运算结果范围。
0 0
- 我的乘法分析
- 我的乘法口诀
- 写写我的大数乘法
- 我的高精度乘法模板
- 乘法散列表的分析
- Android——我的第一个APP,乘法计算器
- 我的c学习:i++ 打印乘法表
- 我的分析
- 我的MBTI分析
- 我的性格分析
- ULONGLONG乘法分析
- 大数乘法的几种算法分析及比较
- 我的一次入侵分析
- 我的星座分析-处女座
- 我的 OLAP 分析三
- 我的时间管理分析
- 我分析Flex的未来
- 我的才储分析
- 图像匹配之序贯相似性检测法匹配
- Windows下Setting Up a Project(建立一个工程)
- 2016最新Android安卓短信拦截(过Android4.4和Android5.0和Android5.1)源码
- leetcode笔记:Gas Station
- HTML5和HTML4之间的区别
- 我的乘法分析
- hdu2176取(m堆)石子游戏 组合游戏初步——NIM
- 【日常学习】【其他算法】codevs3371 刮油漆题解
- 网络安全和机器学习:准确的特征可通向成功
- STM32的启动文件解读
- 7个最好的javascript资源
- Java求解数组中的两个元素的最小距离
- Android实战简易教程-第五十七枪(分享小米手电筒源码)
- CSS的盒模型及元素分类(块级元素、内联元素、内联块状元素)