• ベストアンサー

オーバーフローについて

16進数で12ビットの時ACC+FFFはOKで 10進数で10ビットの時512-200がオーバーフローである ってのがよくわかりません。^^; 単純にビット数を越えたらオーバーフローって覚えていたんでテストで×されて少し戸惑ってしまいました。 よろしくおねがいします。

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

  • ベストアンサー
  • Sins
  • ベストアンサー率39% (16/41)
回答No.1

整数演算(正数ではない)だとすればそうなるのかも?? 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と言うだけでオーバーフローの可能性のありますが・・・

newcolleger
質問者

お礼

素早い回答ありがとうございます。 >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 です

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4903/10364)
回答No.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の補数表現」の復習ですね。

newcolleger
質問者

お礼

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

すると、全ての回答が全文表示されます。

関連するQ&A