みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

 次の問題を教えてください!

「コンピュータで負数を表すのに補数を用いている理由として正しいのはどれか??」
(1)加算を減算で処理することができる。
(2)減算を加算で処理することができる。
(3)乗算を加算とけたシフトで処理することができる。
(4)除算を減算とけたシフトで処理することができる。

 どなたかお詳しい方,簡単で結構ですので理由も添えて
お教えください。
 ちなみに負数は「マイナス」ですよね?では,補数って何ですか??これも教えて下さい。

 宜しくお願い致します。

投稿日時 - 2003-05-20 08:28:08

QNo.552479

すぐに回答ほしいです

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

補数というのは、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

というかんじです。

投稿日時 - 2003-05-20 11:50:25

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

こんにちは。

《(2)減算を加算で処理することができる》です。

補数とは、コンピュータが演算処理するためにプラスの値でマイナスの値を表す数です。
2進数でマイナスの値を表す一般的な方法は、最上位桁を「符号ビット」として使い、0ならプラス、1ならマイナスの値を表すという約束になっています。

補数を得るためには、2進数で表された各桁の数値をすべて反転し、その結果に1を加えます。
たとえば、-1を8桁の2進数で表現するには、1→00000001の補数→11111111となります。
最上位桁が1なので、これでマイナスだということがわかります。

ためしに、《1-1》を演算しますと

00000001+11111111=100000000

となりますが、コンピュータはあふれた9桁目を無視するようになっていますので、、8桁の範囲で考えれば確かに0となります。

投稿日時 - 2003-05-20 09:25:32

お礼

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

投稿日時 - 2003-05-20 11:01:13

あなたにオススメの質問