我有2 64位整数,我想将它连接成一个128位整数。如何将两个64位整数连接成128位整数?
uint64_t len_A;
uint64_t len_C;
len_AC= (len_A << 64) | len_C;
GCC不支持uint128_t
。
有没有其他方法可以做到这一点?
我有2 64位整数,我想将它连接成一个128位整数。如何将两个64位整数连接成128位整数?
uint64_t len_A;
uint64_t len_C;
len_AC= (len_A << 64) | len_C;
GCC不支持uint128_t
。
有没有其他方法可以做到这一点?
如果你的GCC没有uint128_t
它肯定没有128位整数。
所以你需要代表他们例如与结构像
struct my128int_st {
uint64_t hi, lo;
} ac;
ac.hi = a;
ac.lo = c;
的灵感说:
的问题是,你有什么打算做这个整数未来。
您可能希望使用任意精度库,以便携和可靠的方式为您处理这个问题。为什么?因为您可能会发现自己在处理给定硬件中整数的高位或低位时会遇到永久性问题。
即使你肯定知道,你的代码将运行,你仍然需要制定一整套与您的128位整数交易功能的,因为不是所有的编译器都支持128位的,(好像GCC确实支持这种类型的整数),例如,您将需要为基本的数学运算创建一组函数。
它可能会更好,如果你使用GMP库,请访问以下链接了解更多:约128位整数 http://gmplib.org/
GCC文档http://gcc.gnu.org/onlinedocs/gcc/_005f_005fint128.html – zch
将它存储为两个'uint64_t's,然后相应地执行操作。 – 2013-11-26 21:02:17
您可以使用128位的Intel SSE内部函数。 请参阅http://stackoverflow.com/questions/9437599/sse-loading-ints-into-m128 – aust