有時候對整數做四則運算時, 發現數字過大,超出了通常程式語言提供型別的最大範圍,自己動手總結了一下對這些數字進行運算的技巧。
先實現加法和乘法。
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的儲存和運算。不考慮進製情況下,位的異或運算跟求 和 的結果一致 異或...