繁体   English   中英

C ++任意长度的整数

[英]C++ arbitrary length integers

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

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

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

图书馆:

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

应该做的伎俩

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM