超大數的四則運算_第1頁
超大數的四則運算_第2頁
超大數的四則運算_第3頁
超大數的四則運算_第4頁
超大數的四則運算_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、超大數的四則運算請計算:1、 2 的 1000次冪2、 2 的 10000次冪3、 12345678923456789534535345434543 乘上9387429387492873492873484792883748927334534535342主要內容數字存儲的實現1加法運算的實現 2減法運算的實現 3乘法運算的實現 4除法運算的實現 5冪運算的實現63數字存儲的實現大數計算的因數和結果精度一般是少則數十位,多則幾萬位。在C/C+語言中定義的類型中精度最多只有二十多位,因而我們采取用鏈表存貯的方式來存放大數。在計算中會用到從高位開始計算,和從低位開始計算數值的兩種情況。所以我們將鏈表定

2、義為雙向鏈表,其中為一個單元來存貯數據,一個指針指向前方的數據,另一個指向后的數據。其結構為: 4數字存儲的實現struct Node/ 定義一個雙向鏈表用來存貯結果 char data;/ 數據*定義為字符的原因:要顯示負號 Node *next;/ 尾指針 Node *ahead;/ 首指針;5加法運算的實現12345678991234344661加數被加數+初始化進位為0,各對應位相加后再加上進位數1、進位為102、進位為163、進位為154、進位為12由低位向高位相加計算,直至所有運算結束6處理中注意問題: 1必須判斷出操作數A、B的長度,以位長的一個作為循環(huán)基礎。2最后一位(最高位)

3、的運算中,若進位不為0,則需增設多一個存儲結點。7減法運算的實現 算法也是從低位開始減。先要判斷減數和被減數那一個位數長,減數位數長是正常減;被減數位數長,則被減數減減數,最后還要加上負號;兩數位數長度相等時,最好比那一個數字大,否則負號處理會很繁瑣;處理每一項時要,如果前一位相減有借位,就先減去上一位的借位,無則不減,再去判斷是否能夠減開被減數,如果減不開,就要借位后再去減,同時置借位為1,否則置借位為0。8減法運算的實現12345678671234345798減數被減數-初始化借位為0,各對應位相減后再減上借位數1、借位為192、借位為163、借位為004、借位為02由低位向高位相加計算,

4、直至所有運算結束9處理中注意問題: 1如果被減數大于減數時,指針和相應循環(huán)長度控制變量也要做相應的修改 2結果可能會出現前面是一堆0的情況,要處理好,如當減數為112,而被減數為111時,會出現001 10乘法運算的實現 首先說一下乘法計算的算法,從低位向高位乘,在豎式計算中,我們是將乘數第一位與被乘數的每一位相乘,記錄結果,之后,用第二位相乘,記錄結果并且左移一位,以此類推,直到計算完最后一位,再將各項結果相加。得出最后結果。當然我們可以直接用這種方法,但要用多個鏈表來保存計算出的分結果, 之后結果再相加得到最后結果,但是這樣會浪費很多空間。 11乘法運算的實現只用一個鏈表來表示結果,先把第

5、一位乘數與被乘數的結果保存在鏈表中,之后把存儲結果的頭部后移一位、也就是從鏈表的第二加起,當第二位乘數與被乘數結果加到第二之后的各個項內。以此類推,直到結束。這樣就可以用一個鏈表來存儲相乘后的結果。12乘法運算的實現12345678671234345798乘數被乘數*初始化進位為0,各對應位相乘后再加上進位數1、進位為562、進位為663、進位為554、進位為40由低位向高位相加計算,直至所有運算結束13處理中注意問題: 1傳入和保存的都是字符,所以計算時要將字符轉化為數字,算完再轉化為字符存儲 2另外進位時要處理,當前的值加上進位的值再看本位數字是否又有進位;3輸出時要逆序輸出,因為鏈表首指

6、針是存的結果的最低位。函數為了對應輸入輸出結果的一致性,都有采用了字符串輸出,所以在輸出時又將鏈表轉為了字符串14除法運算的實現首先說一下我們所要的結果,當除數除不開被子除數時,不用除到小數,當除數小于被除數時,除數作為余數既可,不用再向下除了。15除法運算的實現除法算法最容易想到的數字電路,或模擬電路時里面有用門實現的除法器,做法是用除數減被除數,再用一個加法器去計算存儲結果,算法簡單明了,計算速度比算乘方時還慢,電路中計算的長度不過8位,16位,32位,而且都是硬件實現,現要算的是幾千位,幾萬位。特別是兩數位長度差很大時計算速度相當慢,如10000-3時要進行多少次鏈表運算啊。16除法運算的實現就是從高位向低位減,減時以被除數長度為單位,從高位取出大于被除數的字符串,和被除數相減,減的次數為結果,余數從剩下的除數高位再取出幾位做補位,直到大于被除數。再減,循環(huán)減到被減數大于余數加上補位,那么這個新的余數作為結果返回。1718處理中注意問題: 1除法算法計算時是用的最高位開始向低位減,所以要注意指針的位置。 2余數和被減數相減時,一定要注意:一旦能夠減開被除數時,一定要每從除數

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論