2

2 つの 64 ビット整数があり、それを 1 つの 128 ビット整数に連結したいと考えています。

    uint64_t len_A;
    uint64_t len_C;

    len_AC= (len_A << 64) | len_C;

GCC はサポートしていませんuint128_t

それを行う他の方法はありますか?

4

3 に答える 3

1

インスパイアが言ったように:

問題は、次にこの整数をどうするかです。

おそらく、移植可能で信頼性の高い方法でこれを処理する任意精度ライブラリを使用したいと思うでしょう。なんで?特定のハードウェアで整数の上限または下限を選択する場合など、エンディアンの問題に対処する場合があるためです。

コードが実行される場所が確実にわかっていても、すべてのコンパイラが 128 ビット型をサポートしているわけではないため、128 ビット整数を処理する一連の関数全体を開発する必要があります (GCC はこれをサポートしているようです)。たとえば、基本的な数学演算用の一連の関数を作成する必要があります。

GMP ライブラリを使用する方がよいでしょう。詳細については、次のリンクにアクセスしてください: http://gmplib.org/

于 2013-11-26T21:47:40.593 に答える