各位大大好~~
通常寫簡單的程式都會經常用到 int、float、double 等資料型態,但是用做數值計算時,難免會產生溢位的現象,這時就得自行寫除錯程序來排除錯誤。
例如把 int 移到 32 位元系統執行時,
數值範圍是:(-2147483648)~ (+2147483647)
無號(即正整數 unsigned):0~ 4294967295
但是我想計算更大的數值的話,就會發生溢位現象,產生負數(int 型態)或是比理想結果更小的數(unsigned 型態)。
所以我的問題是…
「有沒有演算法是可以令電腦計算更大的數值?」
這個演算法可以是 虛擬碼,如果有 部分的原始程式碼(C 語言或是 JAVA語言) 更好。
換句話說,寫一個 DOS介面程式,這個程式在 32位元電腦模擬 64位元(或 128位元,甚至更大的)電腦來做簡易的 儲存、顯示、計算(加減乘除四則運算皆可) 功能。
我想在個人電腦發展初期,可能已經有程式設計師在煩惱這個問題了。
2006-04-21 00:31:03 · 3 個解答 · 發問者 Big_John-tw 7 in 電腦與網際網路 ➔ 程式設計
請問你是 JavaWorld 的會員嗎?
2006-04-21 06:18:00 · update #1
http://caterpillar.onlyfun.net/Gossip/AlgorithmGossip/BigNumber.htm
個人上次有將上述算式之乘法用 VB 實現一次
http://tw.knowledge.yahoo.com/question/?qid=1306040104529
2006-04-24 11:07:14 補充:
Q:請問你是 JavaWorld 的會員嗎?
A:不是耶,寫程式純粹是興趣自學...
2006-04-21 05:57:49 · answer #1 · answered by weilai 5 · 0⤊ 0⤋
嗯!了解!
2006-04-24 18:30:08 · answer #2 · answered by Big_John-tw 7 · 0⤊ 0⤋
其實這個問題很早就有人在注意了
如果你是在用java他本身就有一個class叫BigInteger
可以處理幾乎任何位數的數字了
如果你要自己去處理這樣的問題
就要去注意存放和溢位的問題
通常在做+-的部分都不算很難
不過在*上會更複雜一點
最不好處理的就是/的部分
2006-04-21 07:39:20 · answer #3 · answered by ? 4 · 0⤊ 0⤋