• ベストアンサー

補数表現を用いた加算

次の演算を符号つき2の補数表現を用いた加算として行い、1語の大きさは演算の結果あふれが生じない範囲で、最も小さいものを用いよ。 (1)23‐17 (2)‐23‐17 計算仮定・解説と解答お願いします。

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

  • ベストアンサー
  • pooh0206
  • ベストアンサー率41% (179/433)
回答No.1

(1) 23-17=23+(-17)=6ですから、絶対値が最大の23を補数表現で表すことができればいい。 23(10)=010111(2)と6ビットにすればいいです。 そうすれば 010111+101111=000110でOK (2) -23-17=(-23)+(-17)=-40 ですから、絶対値が最大の-40を補数表現で表すことができればいい。 -40(10)=1011000(2)と7ビットにすればいいです。 そうすれば 1101001+1101111=1011000でOK

201102
質問者

お礼

ありがとうございます。^^

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

関連するQ&A

  • 2の補数を用いた符号付10進数の変換

    次の問題の解き方を教えてください。 次の演算を、符号付2の補数を用いて計算せよ。bit数は符号を含めて6bitとする。あふれが生じたらそれを示せ。 (10)は10進数表記という意味です。 -8(10)-4(10) 15(10)-(-17(10)) 一応自分で解答は作ったのですが、合っている自信が全くないのでご回答お願いします 補足

  • 基本的な情報の問題なんですが次の問題の解き方教えて下さい

    次の演算を、符号付き2の補数表示を用いた数に加算として行え。ただし、ビット数は演算の結果あふれが生じない範囲で、最も小さいものを用いよ。 (a)23-17 (b) 23+17 (c)-23-17 よろしくお願いします。

  • 補数表現で表現できる数値の範囲

    8ビット固定小数点(補数表現)で表現できる数値の範囲を 求める問題があります。 この場合の補数表現は2の補数且つ符号付絶対値表現なのでしょうか? また、この問題の解説をお願いします。

  • 補数を利用した引き算について

    こんにちは。 『2進数で 111 - 010 を計算をせよ。』 という問題があります。 つまり10進数でいう所の 7 - 2 = 5 の計算をします。 補数を利用すると引き算が足し算ででき、演算が簡単になることを 本は説明しようとしてるのですが、腑に落ちない点があります。 解説では --------------------------------- 引く数 010 の補数を求めると 101 なので  111 +101 -------- 1101  ↓  101 よって桁上がりを無視した 101 が答え --------------------------------- との事ですが疑問に思うことがいくつかあります。 I. 上記の計算では3ビットであることが前提になっています。 7 - 2 = 5 をしたいわけですから、そうすると  111 ←符号なしの表現 ( 7 ) +101 ←符号付きの表現 ( -2 ) -------- 1101  ↓  101 ←符号なしの表現 ( 5 ) となり、符号なしと符号付きの数値を混ざってしまうが、良いのでしょうか? また、この説明の仕方だと答えが 0~7 になる答えしか出せません。つまり引く数の方が大きいと計算できません。 私は補数を使うのであれば正の値・負の値、全て符号付きの値でなければいけないと思っていたので、 もし私が説明するのであれば全て符号付きにし、そして符号付きで7を表せるようにするために4ビットにして  0111 ←符号付き( 7 ) +1110 ←符号付き( -2 ) ---------- 10101  ↓  0101 ←符号付き( 5 ) とするのであれば納得できます。 答えの範囲も -8~7 と負の値も許容できます。 II. 実際には 本のように引く数だけを補数にして足し算をして答えを求めているのか、 それとも私のように正の値・負の値、ともに符号付きの表現にして足し算をしているのか、 もしくは、いずれとも違うのか、どうなのでしょうか? また、参考文献などがありましたらご紹介お願いします。 以上ですがよろしくお願いします。

  • 2の補数の問題

    お世話になります。 初歩的な質問で申し訳ございませんが、質問させてください。 ------------------------------------------------------------- 問:負数を2の補数で表現する符号付き16ビットの2進数を16進法で表示したもののうち、4倍するとあふれが生じるものはどれか。 ア 1FFF イ DFFF ウ E000 エ FFFF ------------------------------------------------------------- 答えはイなのですが、イマイチです。 とある解説だと、4倍すると符号が変わるものがあふれとのことでした。 DFFF →(2の補数)0010 0000 0000 0001 →(4倍する)1000 0000 0000 0100 確かに符号が変わることは分かるのですが、ウでも E000 →(2の補数)0010 0000 0000 0000 →(4倍する)1000 0000 0000 0000 こちらも符号が変わることにはならないのでしょうか? どうぞよろしくお願いいたします。

  • 2の補数について

    情報処理試験(基本情報)用の考え方という前提でお聞きします。 「負数を2の補数形式で表現する2進数の計算で・・・・」という問題がよくあります。 この問題文の中で「10101」などの数(これは5ビットの符号付2進数とします) として記述されているものは、もう2の補数になっていると考えていいのでしょうか? それともこれを、今から2の補数に直すのですか? (もし直すのであれば、最上位ビットの符号が変わるのでしょうか?) 違う言い方をしてみますと「A」の2の補数が「-A」だとしたら、 「-A」の2の補数は「A」になるんでしょうか? それとも「そんな表現はない。-Aの時点ですでに2の補数だ」という ことになるのでしょうか? 解りにくくてすみません。

  • 2の補数が成立する理由

    2の補数表現の特長は、桁あふれを無視することで、ある値Aの減算を Aの2の補数の加算として扱うことができるのはわかるのですが この特徴が成立する理由というのが分からないのですが、 どういうことでしょうか?

  • 8ビットを2進数で表現すると…

    質問です。 符号付の整数を8ビットの2進数で表現するとき、00110111-11000001の演算結果はどのようになるのでしょうか? 符号ビットは左端にあり、負数は2の補数で表します。

  • 補数について教えてください!

    情報処理技術者試験の内容なんですが、やり方も理解できず悩んでいます。教えてください。 その1. 2の補数を使って解きなさい   0110  -)0111 ------------ その2. 次の2進数は2の補数であらわした負の値である。符号付きの10進数に変換しなさい。  1) 1001  2) 1010  3) 1111  4) 1000 その3. 次の10進数を2の補数(4ビット)に変換しなさい。  1)-6  2)-3  3)-5  4)-4 本を見ながら解いているのですがいまいち理解できません。お手数お掛けしますが、解る方がいらっしゃいましたら解説付で教えてくださると助かります!よろしくお願いいたします!

  • 問:負数を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の補数を使用していなかったので、疑問に思っています。 頭が混乱しております・・・。 回答宜しくお願い致します。