• ベストアンサー

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にする。

質問者が選んだベストアンサー

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

こんにちわ。 どの方法でも良いのではないでしょうか? 128bit の値を格納する領域があれば、格納するデータ型がsigned long であろうと、unsigned long であろうが、問題はありません。 気を付ける事は、128bit 変数のBoundary 調整の問題です。 → 128bit の変数が、何バイト単位に整列されるかと言う事です。 これは、OS によって異なりますが、通常はlong 型の配列を使用すれば 問題はありません。 安全性を考えるなら、malloc で動的に領域を獲得して下さい。 → malloc すると、自動的にBoundary 調整された領域が獲得されます。

_hitoshi_
質問者

お礼

Boundary調整の問題はないようです。 回答をありがとうございました。 返答が遅くなり、申し訳ありませんでした。

その他の回答 (1)

回答No.1

それぞれで実装してみて、いちばんしっくりいくやつを採用すればいいんじゃないでしょか。ヒトに訊くまでもなく。

_hitoshi_
質問者

お礼

Cで記述する符合なしと符合つきが、CPUの処理に、どのように影響するのかを理解していなかったため、このような疑問が生じてしまいました。 私の目的とする処理を考える限りにおいては、どの方法を採用しても、問題はないようでした。 回答をありがとうございました。 返答が遅くなり、申し訳ありませんでした。

関連するQ&A