大數運算 1 大數儲存

2021-07-22 01:55:54 字數 738 閱讀 3013

int (16位) -32768~32767

(注:現在大多數的編譯器的int型是32位的 也就是說跟long型的大小一樣)

long long或__int64(64位) 

-9223372036854775808~9223372036854775807

float(32位) 精確到小數點後6~7位 

double (64位) 精確到小數點後15~16位

(注:平時做題時 都把浮點型資料定義為double型 避免精度不夠出錯)

大數計算的數和結果精度一般是少則數十位,多則幾萬位。在c/c++語言中定義的型別中精度最多只有二十多位。一般我們稱這種基本資料型別無法表示的整數為大整數。如何表示和存放大整數呢?基本的思想就是:用陣列或字串存放和表示大整數。乙個陣列或字串元素,存放大整數中的一位。

例如:大數a:1545485785212454510

大數b:15458526545451

大數c:2635578521245451

大數d:487845451

大數e:52454521247

用字串進行大數的儲存後,若進行運算,可以根據ascii表中字串元素對應的ascii值減去0的ascii值進行運算。

例如:字串中a[0]='4',其ascii值是52,0的ascii值是48,用52減去48正好是數字4。

大數運算 4 大數乘法

首先說一下乘法計算的演算法 同樣是模擬人工計算時的方法。從低位向高位乘,在豎式計算中,我們是將乘數第一位與被乘數的每一位相乘,記錄結果之後,用第二位相乘,記錄結果並且左移一位,以此類推,直到計算完最後一位,再將各項結果相加,得出最後結果。計算的過程基本上和小學生列豎式做乘法相同。為程式設計方便,並不...

大數運算 2 大數加法

大數加法的中心思想就是 模擬人工列豎式算加法的方法。先從最低位開始相加,判斷是否進1,一直到最高位。例如 求12545642233 278545的和,該怎麼算?是這樣的 3 3 2 2 4 6 5 4 5 2 1 0 2 7 8 5 4 5 0 0 0 0 0 0 5 不進製,繼續算下一位 0 進製...

大數運算 4 大數乘法

摘自 首先說一下乘法計算的演算法 同樣是模擬人工計算時的方法。從低位向高位乘,在豎式計算中,我們是將乘數第一位與被乘數的每一位相乘,記錄結果之後,用第二位相乘,記錄結果並且左移一位,以此類推,直到計算完最後一位,再將各項結果相加,得出最後結果。計算的過程基本上和小學生列豎式做乘法相同。為程式設計方便...