- ベストアンサー
128ビット変数の符合表現について
C言語で符号付128ビット変数を4つの32ビット変数(signed longまたはunsigned long)で表現したいと思っています。 この場合32ビット変数の符合付き/符合なしはどのように組み合わせるのが適切なのでしょうか。 一応3通りの方法を考えてはみました。 (1)が適切な気もするのですが違う気もします。 アドバイスをお願いします。 (1) 最上位32ビット変数をsigned longにして残りの3つの32ビット変数はunsigned longにする。 (2) 4つの32ビット変数を全てsigned longにする。 (3) 4つの32ビット変数を全てunsigned longにする。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちわ。 どの方法でも良いのではないでしょうか? 128bit の値を格納する領域があれば、格納するデータ型がsigned long であろうと、unsigned long であろうが、問題はありません。 気を付ける事は、128bit 変数のBoundary 調整の問題です。 → 128bit の変数が、何バイト単位に整列されるかと言う事です。 これは、OS によって異なりますが、通常はlong 型の配列を使用すれば 問題はありません。 安全性を考えるなら、malloc で動的に領域を獲得して下さい。 → malloc すると、自動的にBoundary 調整された領域が獲得されます。
その他の回答 (1)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
それぞれで実装してみて、いちばんしっくりいくやつを採用すればいいんじゃないでしょか。ヒトに訊くまでもなく。
お礼
Cで記述する符合なしと符合つきが、CPUの処理に、どのように影響するのかを理解していなかったため、このような疑問が生じてしまいました。 私の目的とする処理を考える限りにおいては、どの方法を採用しても、問題はないようでした。 回答をありがとうございました。 返答が遅くなり、申し訳ありませんでした。
お礼
Boundary調整の問題はないようです。 回答をありがとうございました。 返答が遅くなり、申し訳ありませんでした。