大整數操作
資料型別 | 長度(位) | 取值範圍 |
---|---|---|
char | 8 | ASCII字元 |
short | 8 | -128 ~ 127 |
int | 16 | -32768 ~ 32767 |
long | 32 | -2147483648 ~ 2147483647 |
float | 32 | -3.4e-38 ~ 3.4e+38 |
double | 64 | 1.7e-308 ~ 1.7e+308 |
注:表中的長度和範圍的取值是假定CPU字長為16位。
問題解析:
如上表所示,long型資料最大能對21億以內的數字操作,可是如果兩個100億的數字相加,或者相乘呢?long型肯定不能滿足需求。如果是用在天文學的計算,數字更可能達到幾十位,甚至是幾百位的數字。這已經不可能再使用系統定義的資料型別了,那該怎麼解決?主要思想:
不管是大整數相加,還是大整數相乘,都可以把一個數字的各位數字存進一個陣列裡面,然後再對陣列進行操作。就像小學時候的列豎式做加法或者乘法一樣。
、
具體例題:
(大數相加)
/*******
a和b存放要相加的兩個數的逆序,c將存放逆序的和,l為兩個加數位數取最大值。
例如320+427:a={0,2,3},b={7,2,4},l=3,計算結果c={7,4,7}。
*******/
int Adding(int a[],int b[],int c[],int l)
{
int i,t;
for(i=0;i<l;i++)
{
t=a[i]+b[i]+c[i];
c[i]=t%10;
c[i+1]=t/10;///////////進位
}
if(c[i]!=0)
return i+1;
return i;///////////////////函式返回陣列c的長度
}
(大數相乘)
<span style="font-size:18px;">/*******
a和b存放要相乘的兩個數的逆序,c將存放逆序的積,la、lb分別為兩個乘數的位數。
例如315*66:a={5,1,3},b={6,6},la=3,lb=2,計算結果c={0,9,7,0,2}。
*******/
int Multiply(int a[],int b[],int c[],int la,int lb)
{
int i,j,t;
for(i=0;i<lb;i++)
for(j=0;j<la;j++)
{
t=a[j]*b[i]+c[i+j];
c[i+j]=t%10;
c[i+j+1]+=t/10;////////////進位
}
if(c[la+lb-1]!=0)
return la+lb;
return la+lb-1;////////////////////函式返回乘積的位數
}</span>
第一篇部落格,格式不會編排,不免有些醜,見諒!
如果有什麼建議或者意見,請儘量提出。有什麼問題也可以在下面提出。
不斷地改錯是最快的成長方式,謝謝!
轉載請註明出處,謝謝!(原文連結:http://blog.csdn.net/bone_ace/article/details/40718331)
相關文章
- 長整數的基本操作
- java大整數四則運算Java
- 漫畫:如何實現大整數相加?
- 大整數運算C#實現C#
- [CodeWars][JS]實現大整數加法JS
- Python如何對浮點數進行取整操作?Python
- Python中整數移位及二進位制串操作Python
- PHP操作MongoDB時的整數問題及對策UQPHPMongoDB
- C++ 大整數類(BigInteger類)實現C++
- 5 億整數的大檔案,怎麼排
- 整數排序排序
- 使用純粹的ABAP位操作實現兩個整數相加
- C++ std::list實現大整數加法運算C++
- 輸入一個整數,返回這個整數的位數
- js小數轉整數JS
- “大整數階乖”問題的遞推演算法演算法
- 整數型別型別
- 求正整數
- 整數溢位
- python整數和變數Python變數
- 2034 整數的個數
- MySQL引數調整MySql
- 06:整數奇偶排序排序
- 整數型別(轉)型別
- 整數取模類
- 整數二分
- JavaScript判斷整數或者小數JavaScript
- 四位整數位數拆分
- true--按了整數鍵, false--按了非整數鍵False
- 演算法用連結串列模擬大整數加法運算演算法
- 有一組整數資料,全部除以一個整數a,使得餘數是同n種數字,如何計算出這個整數a的全部可能。
- PHP取整,四捨五入取整、向上取整、向下取整、小數擷取PHP
- ABAP面試問題 - 不使用加減乘除等操作比較兩個整數大小面試
- poj 3468 區間更新 整個區間加一個數和區間求和操作
- JQuery 判斷 正整數jQuery
- 字串轉換整數(atoi)字串
- Java整數緩衝區Java
- 轉換成為整數