Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在c+;中存储128位数字+;?_C++ - Fatal编程技术网

C++ 如何在c+;中存储128位数字+;?

C++ 如何在c+;中存储128位数字+;?,c++,C++,可能重复: 我需要一种存储128位数字的方法,除了unsigned long long之外,还有什么我可以使用的吗?您可能需要使用。没有用于此的基元类型。 Vlad的评论是一个很好的存储解决方案,但如果您需要使用该数字进行计算,则需要使用一个允许对大数字进行表示和算术运算的库 您应该首先了解GMP: 如果只需要存储它,则可以将其存储在类似“char num28[16]”的字节数组中 如果您需要操作它,您需要使用像GMP这样的大数字库。不可能将其存储在一个原始数据类型中,因此我们必须稍微有点创造

可能重复:


我需要一种存储128位数字的方法,除了unsigned long long之外,还有什么我可以使用的吗?

您可能需要使用。

没有用于此的基元类型。
Vlad的评论是一个很好的存储解决方案,但如果您需要使用该数字进行计算,则需要使用一个允许对大数字进行表示和算术运算的库

您应该首先了解GMP:


如果只需要存储它,则可以将其存储在类似“char num28[16]”的字节数组中


如果您需要操作它,您需要使用像GMP这样的大数字库。

不可能将其存储在一个原始数据类型中,因此我们必须稍微有点创造性。可能最简单的方法是让类保存两个64位整数,表示整数的上半部分和下半部分。

我从未见过128位无符号长整数。您可以始终使用表示大数字的库。
struct{uint64_t lo,hi;}
?在
x86_64
上,GCC可以为您生成合成的双字类型。检查
\uu uint128\u t
是否不存在。它能[有效地]处理128位整数吗?@pst:我不知道它是否对固定大小的整数进行了优化,但我相信它的性能还是相当好的。写一个类似于您的情况的小基准测试,并将GMP中的加法与手工编写的64位整数对加法进行比较如何?我从未使用过GMP(尽管它听起来确实是一个不错的方法,尤其是如果需要“存储”值之外的任何东西)。我正在寻找任何额外的即时信息,以了解它在这种情况下的用法。这些小花絮真的可以“冲淡”一个问题。@pst:我只使用过GMP一次(在我硕士论文中的一些计算中),但我发现使用它非常方便。在C++中,它重载运算符,以便您可以使用任意精确的整数,就像普通的代码> INT/INS> >。你能给我指一下正确的链接吗?