アプリ版:「スタンプのみでお礼する」機能のリリースについて

減算器での結果がオーバーフローしてる場合と-の答えの見分け方がわかりません。
画像の写真の右の筆算 0111 0111 - 1010 1100は10進数だと118-(-84)=202なのですが、最上位は符号で表せるのは-128~127なのでオーバーフローして11001010と表示されています。
ですが、例えば20-(40)などの場合答えは11101100です。この二つはどのように区別すればいいのでしょうか、どなたか教えてください。

「減算器がオーバーフローした場合」の質問画像

質問者からの補足コメント

  • うーん・・・

    オーバーフローで答えがプラスにも関わらず最上位ビットが1になってしまっている場合にはコンピュータが教えてくれるんでしょうか?

      補足日時:2018/07/30 08:08

A 回答 (4件)

> この二つはどのように区別すればいいのでしょうか



bに与えられた数値(減数)の最上位ビットが1か0かで判断します。
最上位ビットが1なら、a-(-b) → a+b (b>=0) 増える方向(126→127→-128)に桁あふれします。
最上位ビットが0なら、a-b (b>=0)で減る方向(1→0→-1)に桁あふれします。

a(被減数)の最上位ビットが1の場合も同様、a,b両数値の最上位ビットの1/0の組み合わせで場合分けします。
    • good
    • 1

何のためにCO端子があるのか、COの動作、意味を学ぶこと。

    • good
    • 0

最上位ビットを符号扱いしてるのは便宜上であってデータの一部。

つまりそれだけをみたら判断出来ない。
オーバーフローやキャリーは別にある。
    • good
    • 0

>この二つはどのように区別すればいいのでしょうか、どなたか教えてください。


区別しません

区別したいならば、区別するための回路を追加すればよいだけです。
そして、CPUにはそのような回路があらかじめ埋め込まれていて、区別するための特殊なレジスタに演算結果に従い値がセットされる仕組になっています。
    • good
    • 0

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