固定长度的大整数

时间:2009-11-29 17:01:37

标签: c++ c biginteger

我正在寻找一个大整数的库,但是有固定的宽度(128或256就足够了)。原因是我不想在堆上进行任何分配。 我试图自己制作它们但是实现乘法,除法和模数一种有效的方式似乎是一种非常痛苦的方法。

这已经存在吗?

由于

3 个答案:

答案 0 :(得分:4)

查看GMP库:www.gmplib.org

从功能类别中引用:

  

低级正整数,   难以使用,开销很低   函数可以在mpn中找到   类别。没有内存管理   执行;呼叫者必须确保   足够的空间可用于   结果。 (...)

这似乎就是你所需要的。

答案 1 :(得分:3)

这至少看起来很有希望(谷歌上的int128 library命中数字为8)。

http://www.mx-3.cz/tringi/www/langen.php?id=int128

“与其他大数字类不同,您可以像使用其他POD类型一样处理这些类型(例如使用fwrite / fread从文件中存储和加载)。这些内部表示是正确的128位小端整数。”

答案 2 :(得分:2)

如果你觉得GMP太复杂了,Dave Hanson在他的书C Interfaces and Implementations中有一些非常好的功能。有一个没有分配的低级接口(你可以控制所有东西),然后有两个更高级别的接口可以逐步管理堆上的更多分配。