こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VHDLのsignedとunsignedの違いは?

まえまえから疑問に思っていたので、教えてください。
VHDL(ハードウェア記述言語)の記述で、
ポートの宣言に
「signed」のときと「unsigned」のときがあるのですが、
違いを詳しく教えてください。
以前、誰かに「どちらかは2の補数を使っている」と聞いたのですが、
どちらなのかがわかりません。

また、2の補数以外で表現するとき、負の数はどうすればいいのでしょうか?

投稿日時 - 2001-03-14 16:49:12

QNo.51716

すぐに回答ほしいです

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

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には負の数はありません。

投稿日時 - 2001-03-16 05:14:53

お礼

toysmithさん、回答ありがとうございました。
VHDLは本当に大まかなところは習いましたが、
知っているというほどではありません(^^;
Integerのサブタイプだったんですね。
VHDLの入門書には出てこないので、困っていました。
勉強会に間に合いました。
本当に助かりました。

投稿日時 - 2001-03-16 09:09:23

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

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で違ってたらごめんなさい。

投稿日時 - 2001-03-14 17:59:25

お礼

shigatsuさん、早速の回答ありがとうございました。
勉強していていつもいきづまっていたのですが、
だいぶ理解できました。
C言語でもよく使われるみたいですね。

投稿日時 - 2001-03-16 09:06:27