C++任意长度的整数
C++ arbitrary length integers
在C++中,是否可以定义任意长度的整数?
因此,不必对33到64位之间的任何值使用uint64_t
,我可以定义自己的34位、36位等整数。
编译器有自己的类型,正如您所提到的。long(在大多数平台上为32位)和long-long(在大部分平台上为64位)。如果您需要对较大整数的支持,可以使用不同的库,将整数的大小限制为内存的大小。
库:
- GMPxxhttps://gmplib.org/manual/C_002b_002b-Class-Interface.html#C_002b_002b-类接口
- Boost多精度图书馆www.Boost.org
当您生活在C++世界中时,请使用https://gmplib.org/
应该做的技巧
对于计算,它不会给您带来任何优势,因为今天的处理器针对32位或64位算术进行了优化。
如果你需要它们来解决大小问题,那么定义你自己的n位数字容器是有意义的,这可以很容易地编码。
更一般的可能是mod-n数字的容器(即,从0到n-1的数字,不一定是2的幂的模)。为此,一个简单的解决方案(但不是空间最优的)可以基于适合64位整数的n的最大幂(例如,您可以将0到6之间的22个数字打包为0到2*64-1之间的单个数字)。
相关文章:
- C++长双大"safe"整数
- C 字符串返回字符串的整数/双精度/长整型值
- 如何解决隐式转换丢失整数精度:'size_t'(又名"无符号长")到'int'警告?
- FlatBuffers/Protobuf 中是否有支持任意 24 位有符号整数定义的可移植二进制序列化架构?
- 将最小值整数转换为无符号长整型
- 我在c++中遇到了一个奇怪的错误,其中一个计算2个小整数加法的语句溢出到一个长值中
- 整数数组中最长的回文
- 如何将argv字符串更改为大数字的长整数
- 使用整数初始化列表初始化长双精度的向量
- 使用递归函数 (c++) 将长字符串转换为整数时输出错误
- C++- 一个很长的整数 promblem
- 涡轮增压C++结果无法与长整数
- 将逗号格式化为长整型整数
- 将任意整数转换为 void*
- C++非常长的整数计数器
- 如何在给定任意数量的整数的情况下创建一个唯一键?并使用该键存储,然后从地图中查找
- 如何将字节数组转换为整数类型(整数、长整型、短型等)"安眠安"?
- C++有符号和无符号整数与长-长速度
- 如何在C++中使用宏生成任意长的参数列表
- 丢弃部分行并保存任意长的数字