• ベストアンサー

教材と答えが合いません;

「-20570dを16ビットの2進数の2の補数表現で表しなさい。」 という問題があります。 何回計算しても 0101_0000_0101_1010b となるのですが、教材の答えでは 1010_1111_1010_0110b となっています。 この答えって2進数を求めて終わってしまっていて、「2の補数表現」にする部分の計算が行われていない気がするんですが… 分かる方お願いします。

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

  • ベストアンサー
  • theisman
  • ベストアンサー率47% (56/119)
回答No.4

「-20570dの2の補数を求めなさい」という問題と勘違いしていませんか? この問題は、「-20570dを2進数で表しなさい(ただし、負の数の表現法として2の補数表現を使いなさい)」という問題です。 2進数で負の数を表す方法はいくつかあって、 a)最上位ビットが符号を表し、残りは絶対値を表す b)全ビットを反転させて表す(1の補数表現) c)2の補数をとる … などがあります。一番代表的な表し方は、c)の2の補数表現ですが、プログラムの処理方法によっては、敢えて他のやり方をした方が効率よく処理できる場合があります。 ですから、単に「-20570dを2進数で表しなさい」という場合は、どの方法で負の数を表現していいかわからないので、負の数の表現法を指定しなければいけないわけです。

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

その他の回答 (3)

noname#70673
noname#70673
回答No.3

おはようございます。 2の補数=2進数の負の表現、とお考えください。 簡単に考えると足すと0になる2つの数値(上の例で行けば20570と-20570は足して0になる関係ですね)。 これを求めるために1の補数を(単純に各々のビットを反転させるだけ)求めて、更に1を加えて2の補数にします。1の補数を足すと、全ビットが1になることは容易に理解できます。これに1を加えるとすべての桁が繰り上げになり0となり、16+1ビット目に1が繰り上がりますが、この16+1ビット目は無視します。即ち、足すと0になるということです。 足して0になる関係とは、ある数値に対する負の数値、という意味になります。 いかがでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
noname#70673
noname#70673
回答No.2

#1です。説明がやや不親切(かつ、自分ももう一度復習)でした。 下記を参照してください。 http://ja.wikipedia.org/wiki/2%E3%81%AE%E8%A3%9C%E6%95%B0

全文を見る
すると、全ての回答が全文表示されます。
noname#70673
noname#70673
回答No.1

こんばんは。 1010_1111_1010_0110b(教材の答え)が正しいです。負の数の16Bitの2の補数表現なので、最上位Bitは必ず1になります。 0101_0000_0101_1010bは、正の数値20570の2進表現です。 補数表現のところをもう一度復習してみてください。

netekun
質問者

補足

上のサイトを見せていただいて思ったのですが、負の数の2進数表現の最上位は必ず1になっていましたが、そこから2の補数表現にした場合にも、最上位は1になるのでしょうか? お願いします。

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

関連するQ&A

  • やっと就職できたのですが、課題がありましてすごく困っています。お答宜しくお願いします。

    質問が少し多くなりますが、よろしくお願いします。 (1)問題、2進数の計算をしなさい。引き算は補数を使ってやること。 1110101-100111= (2)問題、4ビットで計算しなさい。引き算は補数を使ってやること。 0011-0110= 1110+1101= 1110+0111= (3)問題、次の16進数は2進数ではどのように表せますか。また、10進数ではどうですか。 (1)20 → (2)4C → (3)100 → (4)7F → (4)問題、球が100個あります。(球の色は全て赤色です。)     この中から一つ取り出して球の色を教えてもらった場合、何ビ    ットの情報量を得たか答えなさい。(教えてもらう方は球の色    が赤色しかないことは知っている。)計算式をたてて答えなさ    い。 (1)番の問題ですが、他の足し算や掛け算の問題は分かったのですが、引き算がどうしても分からないのです。 (2)番の問題ですが、(1)番にも出てきましたが補数の意味が分かりませ ん。 (3)番の問題では、16進数と2進数、16進数と10進数の対応表ですぐ答えはでてくるのですが、計算方法が分からないのです。 (4)番の問題は、最初から球の色は知っているから情報量はゼロにな  ると思うのですが、計算式をたてて答えなさいとあるので・・・ 長くなり本当にすいません。答えだけではなく計算式も書いて頂けたら有難いことです。文章が下手ですいませんが、宜しくお願いします。

  • 記数法(n進数)

    ① −(2D)16 を符号付絶対値 8 ビットで表す ② −(146)8 を「負数は 2 の補数で表現する」8 ビットで表す ③ 符号付絶対値 8 ビット (10110101)2 を 10 進数で表す ④「負数は 1 の補数で表現する」 8 ビット (01011001)2 を 8 進数で表す ⑤「負数は 2 の補数で表現する」 8 ビット (10111011)2 を 16 進数で表す ()の後の数字は小文字です。 n進数からm進数への変換と計算はできるようになったのですが、ビットの表現などが分からないので教えて頂きたいです。

  • 2の補数表現2進数が表す10進数は?、

    次の2の補数表現の2進数が表す10進数はいくらか? 1111 1111 1111 1111 1111 1111 1111 1111 という問題があるのですが、 これを解くと、まず、上のビット列は2の補数表現なのだから、これはマイナスですよね?そして、次にビット列を2の補数を求めるやり方でやると元の数がわかりますよね(この辺がいまいち解っていない)? という事は全ビットを0にして、最下位ビットに1を 足せばいいから0000 0000 0000 0000 0000 0000 0000 0000 + 1 =0000 0000 0000 0000 0000 0000 0000 0001 となります。10進数だと 1を表すから答えはー1という事になるのでしょうか?お願いします。

  • コンピュータ系の勉強をスクールに通わず、独学で勉強しています。理解するまで時間がかかってしまいます。お答お願いします。

    質問が少し多くなりますが、よろしくお願いします。 (1)問題、2進数の計算をしなさい。引き算は補数を使ってやること。 1110101-100111= (2)問題、4ビットで計算しなさい。引き算は補数を使ってやること。 0011-0110= 1110+1101= 1110+0111= (3)問題、次の16進数は2進数ではどのように表せますか。また、10進数ではどうですか。 (1)20 → (2)4C → (3)100 → (4)7F → (4)問題、球が100個あります。(球の色は全て赤色です。)     この中から一つ取り出して球の色を教えてもらった場合、何ビ    ットの情報量を得たか答えなさい。(教えてもらう方は球の色    が赤色しかないことは知っている。)計算式をたてて答えなさ    い。 (1)番の問題ですが、他の足し算や掛け算の問題は分かったのですが、引き算がどうしても分からないのです。 (2)番の問題ですが、(1)番にも出てきましたが補数の意味が分かりませ ん。 (3)番の問題では、16進数と2進数、16進数と10進数の対応表ですぐ答えはでてくるのですが、計算方法が分からないのです。 (4)番の問題は、最初から球の色は知っているから情報量はゼロにな  ると思うのですが、計算式をたてて答えなさいとあるので・・・ 長くなり本当にすいません。答えだけではなく計算式も書いて頂けたら有難いことです。文章が下手ですいませんが、宜しくお願いします。

  • 負の2進数の表示がわかりません

    Q1:負の数(例えば10進数の[-2])を2進数,4ビットで表すには, 1010(MSDの[1]は[-]を表して,後半の3桁は[2])か 1110([0001]の2の補数) どちらが正しいのですか?(学校ではどちらも習いました) またQ2のような計算をするには補数による表示でないとなりませんか?(絶対値に符号をつけるだけだと計算が合いません) Q2:4ビットで表された2進数の計算で    0101-0010=0101+(1110)=10011 となり,答えが5ビットになってしまいます.下4桁で考えると答えが合っている気がします.これで合っていますか?

  • 答えを教えて下さい。続きです。

    式7÷32の結果を2進数で表したものはどれか? ア 0.001011 イ 0.001101 ウ 0.00111 エ 0.0111 ------------------------------------------------ 次の中で1つだけ異なる数がある。それはどれか? 1、10進数の 11 2、2進数の 1011 3、8進数の 12 4、16進数の B ------------------------------------------------ 次のうち、2の補数表現で「-5」を表しているものは? 1.0101 2.1011 3.1100 4.1001 -------------------------------------------------- 16進小数0.FEDCを4倍した値はどれか。 ア1.FDB8 イ2.FB78 ウ3.FB70 エF.EDC0 -------------------------------------------------- 0111に-1をかけたら次のうちどれになるでしょう? (1)1110    (2)1010 (3)0110    (4)1001 ------------------------------------------------ 二つのビット列の対応するビットが異なるとき、(すべてのビットが)1になる論理演算は? 1)否定論理和2)等価演算3)排他的論理和4)論理和 -------------------------------------------------- 4ビットの足し算をするとき半加算器はいくつ必要か。 1.「4個」2.「6個」3.「7個」4.「8個」 ----------------------------------------------- ほんと多くてすいません(><;; これに答えて下さる親切な方、答えだけでもいいので。 お願いします!!

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

    こんにちは。 『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の補数形式で表現する2進数の計算で・・・・」という問題がよくあります。 この問題文の中で「10101」などの数(これは5ビットの符号付2進数とします) として記述されているものは、もう2の補数になっていると考えていいのでしょうか? それともこれを、今から2の補数に直すのですか? (もし直すのであれば、最上位ビットの符号が変わるのでしょうか?) 違う言い方をしてみますと「A」の2の補数が「-A」だとしたら、 「-A」の2の補数は「A」になるんでしょうか? それとも「そんな表現はない。-Aの時点ですでに2の補数だ」という ことになるのでしょうか? 解りにくくてすみません。

  • 【初心者から質問】 2進数の減算について

    学校で「アセンブラ言語」について学び始めました。 「2進数の減算」が分かりません。 ・減算は負の数の加算でおこなう。 ・負の数は2の補数であらわす。 ・補数を導き出すには「ビット反転」と「+1」する。 この3つのルールのことは何となくわかります。 では、  0110 1001 -0010 1100  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  の計算の仕方を教えていただきたいです。   0110 1001 -0010 1100  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   1101 0011  (ビット反転) +1101 0100  (+1する)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  自分でやってみましたが、この先がわかりません。 (つまり負の数を加算する部分が分からないです) この先の答えと、計算方法を教えてください。 よろしくおねがいします。

  • 2進数表現

    負数を表すのに2の補数を用いる16ビットの2進数表現(固定小数点)について次のことについて教えてください。 1.表現できる正の最大数を2進数、10進数で表すとどうなるか。 2.表現できる最小の負数(絶対値が最大の負数)を2進数、10進数で表すとどうなるか。 この2つの問題なのですが、どう考えればいいのでしょうか?題意の負数を表すのに2の補数を用いる16ビットの2進数表現(固定小数点)からあまり意味が分かっていないのですが… よろしければ答えだけではなく考え方も教えてください。よろしくお願いします。