16進数で12ビットの時ACC+FFFはOKで
10進数で10ビットの時512-200がオーバーフローである

ってのがよくわかりません。^^;

単純にビット数を越えたらオーバーフローって覚えていたんでテストで×されて少し戸惑ってしまいました。

よろしくおねがいします。

A 回答 (2件)

>perform the operation on this radix-16 number:


>Convert to 2's complement 14-bit binary;
これ、14で間違いないですか?質問中には12ビットとありますが、どちらが正しい?問題の流れから12が正しいと思うので12の誤記として回答します。

2の補数表現と言う条件があるので、符号付きの2進数になります。最上位ビットが0なら正の数かゼロ、最上位ビットが1なら負の数になります。

ACC、FFFいずれも最上位ビットが1なので負の数です。加算結果のACBも負の数(最上位ビットが1)なのでオーバーフローはありません。負の数同士を足して結果が正(最上位ビットが0)になれば、オーバーフローありです。
また、正の数同士を足して結果が正(最上位ビットが0)ならオーバーフローなし、負(最上位ビットが1)になればオーバーフローありです。

512は2の補数表現10ビットで表現できないのでこの時点でオーバーフローです。
#1の方の解釈のように-512と解釈すると、(-512)+(-200)=312となり、負の数同士を足して正になったのでオーバーフローありです。

もしよくわからなければ、「2の補数表現」の復習ですね。
    • good
    • 0
この回答へのお礼

御礼が遅くなりました。
ていねいにありがとうございました。

お礼日時:2005/07/19 01:14

整数演算(正数ではない)だとすればそうなるのかも??



16進数で12ビットの時ACC+FFF の場合
ACCh は負の値、-1332、FFFh は-1と成ります。
よって、(-1332)+(-1) = -1333 と成り、12ビットの有効範囲は-2048~2047なのでOK

10進数で10ビットの時512-200 の場合
512は16進数に直すと200h と成り、之は負の値なので-512と成ります。200はそのままです。
よって、(-512)-(200) = -712 と成り、10ビットの有効範囲は-512~511なのでNG

て事でしょうか?

但し、条件付けがおかしいですが(16進数で整数演算すること自体がおかしい)

之は何かのクイズ問題ですか?

10進数の法は512と言うだけでオーバーフローの可能性のありますが・・・
    • good
    • 0
この回答へのお礼

素早い回答ありがとうございます。

>ACCh は負の値、-1332、FFFh は-1と成ります。
この負の値ってのはどこから判断すればいいんですかね?
ACC(16 →101011001100(2 →4+8+64+128+512+2048(10
ってことにはならないってことですよね・・・?

この授業の先生が全部英語で話すんで途中でよくわからなくなってしまいました^^;

>之は何かのクイズ問題ですか?
その授業の最後にあるミニテストです

問題は
perform the operation on this radix-16 number:
Convert to 2's complement 14-bit binary;
ACC + FFF
です

お礼日時:2005/06/22 17:24

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

今、見られている記事はコレ!

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ