• ベストアンサー

コンピュータにおける負数について

 次の問題を教えてください! 「コンピュータで負数を表すのに補数を用いている理由として正しいのはどれか??」 (1)加算を減算で処理することができる。 (2)減算を加算で処理することができる。 (3)乗算を加算とけたシフトで処理することができる。 (4)除算を減算とけたシフトで処理することができる。  どなたかお詳しい方,簡単で結構ですので理由も添えて お教えください。  ちなみに負数は「マイナス」ですよね?では,補数って何ですか??これも教えて下さい。  宜しくお願い致します。

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

  • ベストアンサー
  • Largo_sp
  • ベストアンサー率19% (105/538)
回答No.2

補数というのは、nの補数という形をとって nから引いた数のことをいいます。 10進数の引き算の筆算をするのに10の補数を考えると良い...とか使います。 この場合。#1の方の言われる補数は、2の補数といいます。 コンピューターの計算の場合、1の補数というのも使われるときがあり、 これも、(2)減算を加算で処理することができる。補数です。 1の補数は単純にビットを反転するだけです。 あふれを計算結果に足します。 0が0000(+0)と1111(-0)(4ビットの場合)2つ存在します。 負数だとわかったときビット反転するだけで、絶対値がわかります 実際に計算すると、 5-3の時 0101-0011=0101+1100=(1)0001→0001+(1)=0010 3-5のとき 0011-0101=0011+1010=1101...(-)0010 5-5のとき 0101-0101=0101+1010=1111...-0 というかんじです。

その他の回答 (1)

  • otake2002
  • ベストアンサー率29% (18/61)
回答No.1

こんにちは。 《(2)減算を加算で処理することができる》です。 補数とは、コンピュータが演算処理するためにプラスの値でマイナスの値を表す数です。 2進数でマイナスの値を表す一般的な方法は、最上位桁を「符号ビット」として使い、0ならプラス、1ならマイナスの値を表すという約束になっています。 補数を得るためには、2進数で表された各桁の数値をすべて反転し、その結果に1を加えます。 たとえば、-1を8桁の2進数で表現するには、1→00000001の補数→11111111となります。 最上位桁が1なので、これでマイナスだということがわかります。 ためしに、《1-1》を演算しますと 00000001+11111111=100000000 となりますが、コンピュータはあふれた9桁目を無視するようになっていますので、、8桁の範囲で考えれば確かに0となります。

hiro0217
質問者

お礼

 すごく分かりやすくて感謝してます。 ありがとうございます。 できれば,今他の分からない問題を質問しましたので, そちらもよろしければお教え頂くと助かります。 お世話になってますスミマセン。。。

関連するQ&A