dポイントプレゼントキャンペーン実施中!

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

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

A 回答 (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には負の数はありません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/03/16 09:09

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で違ってたらごめんなさい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/03/16 09:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!