我想在C++中實現一個BigInteger類。但是,首先,我有一個基本問題,「基礎數據」如何表示?例如,最愚蠢的方法是擁有一個固定的(或動態的)char數組,並在char中存儲每個整數的整數。但是,好吧,這是一個非常愚蠢的方式,我在這裏爲您提供建議。C++大整數
Q
C++大整數
11
A
回答
10
還有一堆的建議,這裏現有的實現:C++ handling very large integers
如果你有實現自己的(如作業),那麼你就必須決定的最佳方式,以及如何「大」就需要處理。您可以使用一組DWORD,並處理從一個到另一個的溢出。
雖然,對於一些項目歐拉的東西,我實際上實現了一個BigNumber類建立在一個字符串。結果是+ - * /最簡單的實現,並且縮放到比我能用幾個unsigned long long
s得到的顯着更長的數字。這個性能對於解決這些難題來說是完全足夠的。
因此,您需要在易用性和最佳性能之間進行權衡。玩得開心;-)
4
您可以完全按照您描述的方式創建一個大整數。事實上,我第一次實施這樣的課程,就是我這樣做的。它幫助我實現了算術運算(+
,-
等),因爲它在我習慣的基礎(10)中。
你的「字符數組」的自然增強是保持在10位,但是使用4位而不是整個字節。因此,數字123,456可以由字節12 34 56
代替字符串123456
來表示。 (三個字節,而不是六個)。
從那裏,你可以使基數爲2的數字存儲。諸如加法的基本算術運算在基數2中與在基數10中完全相同。因此,可以使用字節FF FF
存儲數字65565。 (例如,在一個向量unsigned char
s中。)爲了效率,BigInts的某些實現使用較大的塊,例如short
或long
。
如果您正在進行大量的顯示和/或序列化到base-10,並且想要避免轉換爲base-2,則Base-10大整數可能會很有用。
相關問題
- 1. C++:最大整數
- 2. C++中的大整數
- 3. C:大整數的表示
- 4. C或C++中的大整數
- 5. 模數從非常大的整數C#
- 6. 大整數除以大整數
- 7. 大整數除以整數
- 8. 大整數和雙整數
- 9. 調整字符數組的大小c
- 10. C++調整動態數組大小
- 11. C++足夠大的整數,枚舉
- 12. 在C++中存儲大整數
- 13. Objective-C存儲大整數值
- 14. C中的任意大整數#
- 15. 大整數文字源格式在C++
- 16. 使用精確大小的整數C++
- 17. 在C++中處理大整數
- 18. C++ - 調整大小動態數組
- 19. Ruby原生C大整數段錯誤
- 20. 在C中解釋大整數?
- 21. 調整數組的大小(c)
- 22. 如何調整數組的大小C++
- 23. 大整數
- 24. 快速執行大量的整數計數器(在C/C++)
- 25. 使用Visual C++ 2008處理C/C++上的大整數
- 26. 調整大小C#陣列
- 27. 調整窗口大小C#
- 28. c#圖像調整大小
- 29. C#調整大小問題
- 30. C#Javascript iframe調整大小
可能重複的[如何在C++中實現big int](http://stackoverflow.com/questions/269268/how-to-implement-big-int-in-c) – darioo 2010-12-22 07:45:58