128位可变操作

时间:2014-06-10 18:38:58

标签: c++ 128-bit

在c ++(Linux,不使用boost)。

我有2个64位变量(很长)(比如说x和y)。

当我做x * y时,结果可能是128位。 我该如何存放?是否有一个定义128位的变量?

(我需要128位的特定变量,因为稍后在我的程序中我可以使用" /"对该128位变量进行操作)

感谢' s

1 个答案:

答案 0 :(得分:1)

尝试__int128 GCC扩展程序:

#include <cstdio>

int main(void) {
    long long a, b, c;

    a = 9223372036854775807LL;
    b = 3;
    c = 5;

    __int128 r = (__int128) a * b;

    c = r / c;

    printf("%lld\n", c); // 5534023222112865484
}

请注意,显式转换用于乘法(即对于&#34;强制&#34; __int128类型用于操作数)。只要你有64位目标,就应该这样工作。用例如确认检查结果bc

$ echo "9223372036854775807*3/5" | bc
5534023222112865484

你也可以尝试一些仲裁精度库,如GMP