int :-2147483648~2147483647 (10位數)上面給出了數字的位數範圍。unsigned int :0~4294967295 (10位數)
long long:-9223372036854775808~9223372036854775807 (19位數)
unsigned long long:0~18446744073709551615 (20位數)
現在如果有乙個需求,我們要乙個20位的數字加20位的數字,這個結果可能是20位,那麼不會超過範圍;但結果也可能是21位。
不說20位加20位,比如20位9加1,很明顯是1後面有20位0,超出了範圍。這時就需要大數加法。
大數加法有很多種,我用的是c++中的string。用string存放大數來相加。
含注釋,其實比較好理解,舉個簡單的例子跟著**走就可以。(簡單例子完了再看比較複雜的例子)
#include
#include
#include
using
namespace std;
string add
(string a,string b)
int tmp=0;
//相加後的進製
for(
int i=
0;i++i)
reverse
(ans.
begin()
,ans.
end())
;return ans.
substr
(ans.
find_first_not_of
('0'))
;}intmain
(int argc,
char
** ar**)
C 使用string的大數加法運算(1)
專案要點 1.大數指的是遠超long long int的資料 2.將大數用矩陣進行儲存,並通過矩陣實現運算 3.本人採用字串進行儲存,應注意char的特點 比如 char a 161 cout 此時會輸出 95,而不是161,char型別首個位元位是作為正負號的 加法,此處只做自然數加法,因為存在負...
c 大數加法
在c 中,我們經常需要表示整數。但是,c 的基本資料型別中,最大的long也只能表示 9,223,372,036,854,775,808 到 9,223,372,036,854,775,807之間的數。貨幣型別也不是無限大。如果我們需要表示更大的數,就需要用到一定的演算法來完成。這次,我和大家一起討...
大數 加法 c語言
最近遇到乙個關於大數的問題頓時感覺好方,決定系統學一下大數。注意 關於大數問題,由於陣列不好界定輸入數的大小 陣列的長度 因此主要思想就是先用字串輸入儲存在字串陣列中,再逆序存入整形陣列進行最後逐位運算。剛開始通過部落格寫的 思路 輸入採用字元陣列儲存,然後將輸入存在整形陣列裡,然後逐位相加即可,同...