在 C++ 中使用 128 位整数
在本文中,我们将讨论 C++ 中的 128 位整数。 我们还将了解为什么需要它以及 C++ 中可能的替代方案。
在 C++ 中使用 128 位整数
我们有多种选择来处理 C++ 中的整数。 从int数据类型开始,有64位的long、long int、long long int,我们可以存储的最大正数是9223372036854775807(十六进制7FFFFFFFFFFFFFFF)。
考虑十六进制数 7; 接下来,我们将有 8,即二进制 1000,这意味着符号位打开。 最后,我们有从 -1 到 -9223372036854775808 的负整数。9223372036854775807 是一个足够大的数字,足以处理许多存储加算术运算的要求。
128 位整数及其在 C++ 中的替代方案的重要性
现在,如果您需要更大的整数,问题是,我们要对这些整数执行算术运算吗? 如果答案是肯定的,您可能需要比 128 位更多的存储空间。
两个大整数相加或相乘的结果可能需要更多位。 因此,在这种情况下,实现大整数可能会对您有所帮助。
最后,如果您只需要一个 128 位整数用于存储,一种解决方案是创建两个 64 位整数的结构,或者您可以采用 8 个元素的 int 数组或 16 个元素的 char 数组。
然而,GCC 确实为 128 位整数提供了一种特定的数据类型,即 int128_t; 在支持的编译器上,您可以检查大小:
int128_t var;
cout << sizeof(var) << '\n';
输出将为 16,这意味着 16x8=128
位。
然而,它支持特定的处理器,能够容纳 128 位; 否则,当您尝试存储大整数时,编译器会生成以下警告之一:
warning: overflow in implicit constant conversion
warning: integer constant is too large for its type
讨论的结论是精确决定在最坏情况下需要多少位。
此外,您只想存储数据,还是想执行算术运算? 那么,如果您想执行算术运算,大整数实现就是您的解决方案。
对于大整数实现,您甚至不必担心 500 或 5000 位。
如果您只想进行存储,则可以使用其他解决方案。 使用两个 64 位数据成员的结构,或使用 int
数据类型或 char
数据类型的数组。
相关文章
Arduino 复位
发布时间:2024/03/13 浏览次数:315 分类:C++
-
可以通过使用复位按钮,Softwarereset 库和 Adafruit SleepyDog 库来复位 Arduino。
Arduino 的字符转换为整型
发布时间:2024/03/13 浏览次数:181 分类:C++
-
可以使用简单的方法 toInt()函数和 Serial.parseInt()函数将 char 转换为 int。
Arduino 串口打印多个变量
发布时间:2024/03/13 浏览次数:381 分类:C++
-
可以使用 Serial.print()和 Serial.println()函数在串口监视器上显示变量值。