- ベストアンサー
VHDLのsignedとunsignedの違いは?
まえまえから疑問に思っていたので、教えてください。 VHDL(ハードウェア記述言語)の記述で、 ポートの宣言に 「signed」のときと「unsigned」のときがあるのですが、 違いを詳しく教えてください。 以前、誰かに「どちらかは2の補数を使っている」と聞いたのですが、 どちらなのかがわかりません。 また、2の補数以外で表現するとき、負の数はどうすればいいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
VHDLは御存知ですね。 signed/unsignedはIntergerのサブタイプと考えた方が良いでしょう。 subtype unsigned is integer range 0 to 4294967295 ; subtype signed is integer range -2147483648 to 2147483647; 実際はちょっと違うので本当の宣言を見てください。std_logic_unsignedパッケージ、std_logic_arithパッケージに宣言があると思うのですが。 2の補数表現されるのはsignedです(integerも)。 unsignedには負の数はありません。
その他の回答 (1)
- shigatsu
- ベストアンサー率26% (511/1924)
VHDLは判らないのですが、コンピュータ用の言語でsigned/unsigned となれば、singed の方が符号ありなのでブラスマイナスの表現ができる方です。 例えばC言語などでは 実際の値 0,1,2 - 127, 128 - 254,255 signed char 0,1,2 - 127,-127 - -2, -1 unsigned char 0,1,2 - 127, 128 - 254,255 という感じになります。 最上位ビットが0なら正の数、1なら不の数という表現ですね。 VHDLで違ってたらごめんなさい。
お礼
shigatsuさん、早速の回答ありがとうございました。 勉強していていつもいきづまっていたのですが、 だいぶ理解できました。 C言語でもよく使われるみたいですね。
お礼
toysmithさん、回答ありがとうございました。 VHDLは本当に大まかなところは習いましたが、 知っているというほどではありません(^^; Integerのサブタイプだったんですね。 VHDLの入門書には出てこないので、困っていました。 勉強会に間に合いました。 本当に助かりました。