C ++任意长度的整数

时间:2014-04-19 08:48:48

标签: c++ int bit

在C ++中,是否可以定义任意长度的整数?

因此,我不必使用uint64_t来处理33到64位之间的任何内容,而是可以定义自己的34位,36位等整数。

3 个答案:

答案 0 :(得分:1)

编译器有自己的类型,就像你提到的那样。长(大多数平台上为32位)和长(大多数平台上为64位)。如果需要支持更大的整数,可以使用不同的库将整数的大小限制为内存大小。

库:

答案 1 :(得分:1)

当您生活在C ++世界中时,请使用https://gmplib.org/

应该做的伎俩

答案 2 :(得分:1)

对于计算而言,它没有任何优势,因为今天的处理器针对32位或64位算法进行了优化。

如果你需要它们来解决尺寸问题,那么定义你自己的n位数容器是有意义的,这很容易编码。

更普遍的可能是mod-n数字的容器(即0到n-1的数字,不一定是具有2的精确幂的模数)。为此,一个简单的解决方案(但不是空间最优)可以基于适合64位整数的n的最大功率(例如,您可以将0到6之间的22个数字打包成0到2之间的单个数字** 64 -1)。