大數字的加減乘除四則運算

2021-06-20 11:01:36 字數 694 閱讀 9622

有時候對整數做四則運算時, 發現數字過大,超出了通常程式語言提供型別的最大範圍,自己動手總結了一下對這些數字進行運算的技巧。

先實現加法和乘法。

2個進製相同的數字的加法運算有這樣的規律:

1.  m位的加數加上n位的加數,和的位數最大為 max(m, n) + 1

2. 低位向高位的進製必然小於2

在乘法中,m位的數乘以n位的數,乘積的位數最大為 m+n

明白了這兩個規律,可以簡化**,節省儲存空間。貼上**

注意:1.大數字在陣列中用小端模式儲存,而不是人們使用習慣的大端模式。比喻123在陣列中儲存為 321.

2. 沒有檢查數字的合法性, 只有最高位才能有符號,所有數值的範圍是[0, m)。(m是進製數)

3. 沒有判斷正負號, 沒有處理負數。

4. 考慮到儲存效率最好用char儲存。

加法**

int add(int* m, int m, int* n, int n, int r)

} while(i

乘法**

int multiply(int* m, int m, int* n, int n, int* r)

} }}

減法和加法類似,不過相鄰的高位記錄的不是進製,而是退位。

除法也是模仿手工運算,不斷的試商,相減求餘。實現**較繁雜,暫未實現。

高精度四則運算 大數加減乘除

791 高精度加法 給定兩個正整數,計算它們的和。輸入格式 共兩行,每行包含乙個整數。輸出格式 共一行,包含所求的和。資料範圍 1 整數長度 100000 輸入樣例 1223 輸出樣例 35 include include define lenmax 100000 int main while i ...

位運算實現加減乘除四則運算

只用邏輯運算實現加法 int add int a,int b int sumtemp a b int carry a b 1 return add 只用邏輯運算實現減法 int minus int a,int b 邏輯運算實現除法 低效 int div int a,int b return resu...

位運算實現加減乘除四則運算

目錄加法 減法 乘法 除法計算機最基本的操作單元是位元組 byte 乙個位元組由8個位 bit 組成,乙個位只能儲存乙個0或1,其實也就是高低電平。無論多麼複雜的邏輯 龐大的資料 酷炫的介面,最終體現在計算機最底層都只是對0101的儲存和運算。不考慮進製情況下,位的異或運算跟求 和 的結果一致 異或...