• ベストアンサー

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

 次の問題を教えてください! 「コンピュータで負数を表すのに補数を用いている理由として正しいのはどれか??」 (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

  • 基本情報技術者過去問

    1)負数を2の補数で表す8ビットの数値がある。この値を10進数で表現すると-100である。この値を符号なしの数値として解釈すると、10進数で幾らか? ア)28 イ)100 ウ)156 エ)228 2) 多くのコンピュータが、演算回路を簡単にするために補数を用いている理由はどれですか。 ア)加算を減算で処理できる イ)減算を加算で処理できる ウ)乗算を加算の組み合わせで処理できる エ)除算を減算の組み合わせで処理できる

  • 10進のマイナスの計算について

    10進のマイナスを2進にする方法 10進のマイナスで少数のものを2進にする方法 を教えてください 方法にも減算、加算、除算、乗算とありますが 一番分かりやすいものをお願いします いろいろと調べているのですが どうしてもわかりません 例をだしていただけるとありがたいです 

  • 情報処理の質問です

    加算演算のみで、減算・乗算・除算する方法を詳しく説明するとしたら、どのように答えますか? よろしくお願いします。

  • 論理回路

    この問題教えていただけませんか (1)次の減算を符号無し4ビットで補数計算をせよ。 (1) +5 -)+6   0101 +) (2) -5  -)-4 (2)次の16進数減算を補数加算せよ。 (1)4B0C -) 3A56・・・3A56の16の補数を加算

  • さまざまな加算器と減算器と乗算器について

    最近、論理回路の実験の授業で加算器・減算器・乗算器に取り組みました。 加算器については、半加算器と全加算器の機能や作り方がわかりますが、 Q1.なぜ二つの半加算器で全加算器が作られるのか、その理由が少し推測をしましたが、やはりはっきりとわかりません。 あと、何bitやら何bitやらの並列全加算器についてもよくわかりません。これは本間にレジュメを読みながらしないと、なかなか回路が作れません。 Q2.bitって何ですか?加算器の個数を示しているのか、それとも出力とか入力とかの個数を示していますか。 それから、減算器も全然原理がわかりません。 Q3.結果が1の補数か2の補数かはどのように決められていますか? 文がちょっと長くて失礼ですが教えていただければ感謝いたします!

  • 問:負数を2の補数で表現する符号付き16ビットの2進数を16進法で表示

    問:負数を2の補数で表現する符号付き16ビットの2進数を16進法で表示したもののうち、4倍するとあふれが生じるものはどれか。 ア 1FFF イ DFFF ウ E000 エ FFFF 以下は、それぞれを2進数表示にしたものです。 先頭の符号ビットは[0]の表記で目立たせてあります。 ア [0]001 1111 1111 1111 イ [1]101 1111 1111 1111 ウ [1]110 0000 0000 0000 エ [1]111 1111 1111 1111 以下は、4倍したもの ア [0]111 1111 1111 1100 イ [0]111 1111 1111 1100 ウ [1]011 0000 0000 0000 エ [1]111 1111 1111 1100 この場合は、ア以外は負数ですが、『負数を2の補数で表現する符号付き16ビットの2進数を、16進数で表現した場合』は16進数が正の数でも、2進数だと負数になると言う事でしょうか? また、符号付きでない場合は、上記はすべて正の数と言う事で合ってますか? 回答を見る感じでは16進数を2進数に変換しただけで、『2の補数で表現』の部分がないように思えます。この辺りも知りたいです。 問題の解き方についても疑問があります。 http://questionbox.jp.msn.com/qa4278151.html での回答では、 イ DFFF →(シフト前)1101 1111 1111 1111 →(シフト後)0111 1111 1111 1100 先頭ビットが1から0に変わったので「桁あふれ」。 問題集の回答ではこっちで説明されていました。 http://okwave.jp/qa/q4302488.html のANo2回答では (シフト前)[1]101 1111 1111 1111 (シフト後)[1]111 1111 1111 1100 2の補数表現による負の数の場合,シフト操作によって1が消えていくのは問題ない。 シフト操作によって0が消えると結果が変になる。これが「あふれ」 符号はシフトさせず、左に2つシフトさせた事で、10が消えた事で桁あふれとしています。 ANo1の回答では、 DFFFだと同様に 1101 1111 1111 1111で1の補数は 0010 0000 0000 0000 2の補数は 0010 0000 0000 0001 つまり、-8193ですよね。 4倍すると、-32772で、これは16ビットの2の補数表現 で表現できる数の範囲からあふれてしまいます。 DFFFなどの2進数に変換後、2の補数を使用するのが正しいのでしょうか? 最初の2つの回答では2の補数を使用していなかったので、疑問に思っています。 頭が混乱しております・・・。 回答宜しくお願い致します。

  • 16ビットCPUで32ビットの計算方法

    16ビットのCPUを持つシーケンサ(PLC )で32ビットの四則演算(加算、減算、乗算、除算)をさせたいのですが、命令語にダブルワードを処理できるものがないので、演算がオーバーフローした情報から何かしら自分でプログラムを組まなければなりません。 16ビットのレジスタを使った32ビット演算の考え方を教えてください。

  • このたし算を子供に簡単に計算できるよう説明したい

    540+550+560……+1060=????? という問題です。 540から10刻みの数字を、1060まで足した合計はいくつでしょう?という問題の解き方、考え方を、小学生(乗算、除算、加算。減算できます)でもわかるように説明したいです。 インド式(?)のように、なるほど!とわかやりやすい説明の仕方はありませんでしょうか? 各数字を並べた時、端同士を足せば1600になり、その数をペアの数だけかければ計算しやすいかなと思ったのですが、どうすれば、より早く分かりやすく計算できる説明ができるでしょうか?

  • 負の整数を求める

    負の整数を表現する問題で質問です。 4ビットのパターン1101を下記の通りに求め、小さい順に並び変える場合、 1, 1の補数による表現 2, 2の補数による表現 3, 絶対値に符号を付けた表現(先頭ビットが0は整数、1は負数) 1の補数は反転なので、0010とわかりますが、回答にこれは10進数の2だからと書いてありました。そこまではわかります。ただ、そのあとに、10進数の2だから、1101はマイナス2、とありました。なぜここでマイナス2となるのでしょうか? 2の補数の場合は反転した1の補数に1を加算して、0011とわかりました。しかし、またそれはマイナス3となっています。 3の絶対値に限っては先頭ビットは1なので負で、残りの3ビットは101で、10進数の5だから、マイナス5とあります。これに限ってはよくわかりません。 どなたか説明をお願いします。

  • 論理回路の問題

    以下の問題がわかりません。教えてください 次の16進数減算を補数加算せよ B5A2-7DEF = B5A2+( )=( )