我有 2 个 64 位整数,我想将它连接成一个 128 位整数。
uint64_t len_A;
uint64_t len_C;
len_AC= (len_A << 64) | len_C;
GCC 不支持uint128_t
.
还有其他方法吗?
我有 2 个 64 位整数,我想将它连接成一个 128 位整数。
uint64_t len_A;
uint64_t len_C;
len_AC= (len_A << 64) | len_C;
GCC 不支持uint128_t
.
还有其他方法吗?
首先,您应该决定如何存储该 128 位整数。该维度没有内置的整数类型。
例如,您可以将整数存储为由两个 64 位整数组成的结构:
typedef struct { uint64_t high; uint64_t low; } int128;
那么答案就很简单了。
问题是接下来你将如何处理这个整数。
正如灵感所说:
问题是接下来你将如何处理这个整数。
您可能希望使用任意精度库以可移植且可靠的方式为您处理此问题。为什么?因为您可能会发现自己在处理字节序问题,例如在给定硬件中选择整数的高端或低端。
即使您确定您的代码将在哪里运行,您仍然需要开发一整套处理您的 128 位整数的函数,因为并非所有编译器都支持 128 位类型,(似乎 GCC 确实支持这个整数类型),例如,您需要为基本的数学运算创建一组函数。
如果您使用 GMP 库可能会更好,请访问以下链接了解更多信息:http: //gmplib.org/
如果您的 GCC 没有,uint128_t
它肯定没有 128 位整数。
所以你需要用结构来表示它们,例如
struct my128int_st {
uint64_t hi, lo;
} ac;
ac.hi = a;
ac.lo = c;