90 likes | 203 Views
大數的四則運算. 組員 : 鄭元堂 陳柏凱 施立文 王柏凱. 簡介. 基於記憶體的有效運用,程式語言中規定了各種不同 的資料型態,也因此變數所可以表達的最大整數受到限制,例如 123456789123456789 這樣的整數就不可能儲存在 long 變數中,我們稱這為 long 數,這邊翻為超長整數(避免與資料型態的長整數翻譯混淆),或俗稱大數運算。. 溢位.
E N D
大數的四則運算 組員:鄭元堂陳柏凱 施立文王柏凱
簡介 • 基於記憶體的有效運用,程式語言中規定了各種不同的資料型態,也因此變數所可以表達的最大整數受到限制,例如123456789123456789這樣的整數就不可能儲存在long變數中,我們稱這為long數,這邊翻為超長整數(避免與資料型態的長整數翻譯混淆),或俗稱大數運算。
溢位 • 大多數電腦都區別以上兩種溢位條件。當加法或減法的結果發生進位,必須考量到當運算的數值與結果都是無號數值,即「正數」型態時,運算的結果就不適合使用這個數值型態。所以,在執行無號數值(正數)的加法或減法之後檢查進位旗標是非常有用的作法。「溢位」在運算結果為無號數值時容易發生,可以從有符號的運算數值預計出這類的情形(例如:兩個正整數相加產生的結果為一個負數)。所以,在執行 2 的補數的加法或減法之後檢查溢位旗標是非常有用的作法。
設計:選擇正確的資料型態,尤其要注意資料長度與 signed/unsigned 資料符號。 • 迴避:事先注意指令的運作以及檢查運算的數值,或許可以確保計算出來的結果不會超過記憶體儲存資料的限制。 • 控制:當它被偵測到,還有在其他的程序完成時被檢測出來,那麼溢位是可以被預料的。 • 忽略:這是最普遍的作法,但是這個作法會得出不正確的結果,以及降低程式的安全性。
大數乘法 • 大數乘法是指兩個以上相乘後會在任何數值型態溢位的數字所用的乘法可以用SHIFT,也就是平移一個個位數字的方法,最後再把它們加總起來。如 8888X 8888我們把它分成88__X 88______7744_和 88X 88____7744這時我們會需要把774400和7744加起來,也就是把7744平移兩位再和7744做運算,這樣就搞定了,就算是99位數乘99位數的變態大數乘法,也很輕易的被運算。
進度規畫 • 大致上預定以每2個禮拜完成一個運算為原則。