我想在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