補数について質問

このQ&Aのポイント
  • Javaの参考書に掲載されている補数についての問題に関する質問です。
  • 質問1では、0の補数が存在するのかについての疑問を持っています。
  • 質問2では、補数15のある数Aについて尋ねています。
回答を見る
  • ベストアンサー

補数について質問

以下はJavaの参考書に掲載されている補数についての問題です。 疑問点にお答えいただけましたら幸いです。 次の10進数の補数を8桁の2進数で求めなさい A 15 B 0 C 1 質問1:Bについて、10進数の補数が0となっていますが、こんなのありえるんですか? 補数の定義は、「ある数 A に加えると、和の桁がひとつ上がる最小の数」ということなので、Bならある数がAが100でそれに加える数が0ということでしょうか? 質問2:質問1で記した定義に従い、補数15のある数Aとは85ですか? 質問3:「次の10進数の補数を8桁の2進数で求めなさい」という問題、そもそもどういう意図があるんですか?何故10進数の補数を8桁の2進数で求めさせるんですか? 質問4:この問題、10進数の補数を8桁の2進数に変換する問題かと思いきや、この10進数の補数を2進数に変換し、さらにその変換した2進数を補数にしたものが答えとなっています。 何故ですか?問題文おかしいような、、、 僕が読解を間違えたのでしょうか?

  • Java
  • 回答数3
  • ありがとう数4

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

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.3

ANo.1で紹介された ja.wikipedia「補数」の「定義」より抜粋。 ---------------- b進法において、自然数aを表現するのに必要な最小の桁数をnとしたとき、 bのn乗 -a を「b進法におけるaに対する基数の補数(bの補数)」 という。 定義したように考えると、aの基数の補数とaとを足すと、桁数が1つ増える最小の自然数(=bのn乗)となる。 基数bが文脈上明らかなときには、「b進法における」という表現はしばしば省略される。 ---------------- つまりaが同じでも,bが異なれば補数は異なるし,nが異なれば補数は異なる。 よって。 回答2: A=15だとしても,その10進数の補数と2進数の補数は異なる。また,2桁の10進数の補数と3桁の10進数の補数は異なる。さらに,8桁の2進数の補数と16桁の2進数の補数は異なる。前提条件が不明確で解答できません。 回答4: 質問者のおっしゃっているとおりなら出題がおかしいです。 そもそもの問題文「次の10進数の補数を8桁の2進数で求めなさい」という表現も,経験を積めば「8桁の2の補数を求めているのだろう」とすぐ分かりますが,初心者が「まず10の補数を求めるのだろうか?」と誤読しやすい迂闊な表現であると言えます。注意深い出題者であるなら「次の10進数の2の補数を…」と表記したはずです。 回答3: ANo.1を参照。例を挙げるなら,例えば Java言語において 10進数の-15という数値が,byte, char, short, int, long などの基本データ型の変数においてどういうビットパターンで格納されているかを理解するためには,2の補数の知識が必要です。 回答1: ANo.1を参照。補数という発想においては桁数nが決まっていることを前提としているため,0の補数を求める過程でn桁を越えた部分を無視すると,0に戻るわけです。

wantanton
質問者

お礼

丁寧なご回答まことにありがとうございます!

その他の回答 (2)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

> 僕が読解を間違えたのでしょうか? 「次の10進数の補数を8桁の2進数で求めなさい」という問いは参考書に書いてあったとおりですか? それだけを読むと確かに意味が曖昧です。 しかし、その参考書には補数についての解説も載っているのでしょうから、その文脈によっては一意に決まるのかもしれません。たとえば、 (a)「補数」として2進数の「2の補数」のことしか説明していない場合 (b)さまざまな補数があることを説明した上で、「以下、単に『補数』と書いた場合には2進数の『2の補数』のことを意味する」というような注意書きがある場合 です。これらの場合は、質問者さんが問いを誤読したと言えるでしょう。 > 10進数の補数を2進数に変換し、さらにその変換した2進数を補数にしたものが答えとなっています。 本当ですか? 10進数の場合は10の補数を、2進数の場合は2の補数を使うとしてAについてその計算をすると 15(10進) → 10の補数 85(10進) → 2進数に 01010101(2進) → 2の補数 10101011(2進) ですが、参考書にはAの答として10101011が載っているのでしょうか? 質問文にある情報から私が一番可能性が高いと思う解釈だと、 15(10進) → 2進数に 00001111(2進) → 2の補数 11110001(2進) となって、11110001が答になります。

wantanton
質問者

お礼

丁寧なご回答ありがとうございます^^ >(a)「補数」として2進数の「2の補数」のことしか説明していない場合 たしかに2進数の2の補数のことしか説明されてなかった! 僕が誤読してました

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

その参考書に、補数の説明なかったですか? コンピュータの分野で「補数」というと、「2の補数」を指すことが多いです。実際に整数型の負の表現としてよく使われています。 Javaの参考書の問題なら、おそらく「2の補数」だと思うのですが。10進→2進の変換や、負の値の内部表現を理解するのが問題の目的ではないでしょうか。 以下、「2の補数」として答えると。 回答1: http://ja.wikipedia.org/wiki/%E8%A3%9C%E6%95%B0 にある定義から、8桁の2進数においての「基数の補数」は、b=2,n=8となるので 2^8 - a = 256 - a = 0x100 -a です。よって、Bの補数はa=Bとなるので 0x100 - B = 0x100 -0 = 0x100 になります。8桁の2進数なので、9桁以上は溢れてしまうので 0x100→0x00 = 0 です。 ちなみに、10進でも「2桁の10進数」と考えれば、同様に100(10^2)→0です。 回答2: 計算しなおしてください。 回答3: 整数の内部表現を理解するのが目的だと思われます。 回答4: Cの解答が0b11111111(0xff)になっているのなら、間違いなく「補数」=「2進数での2の補数」です。

wantanton
質問者

お礼

丁寧なご回答まことにありがとうございます わかりやすかったです^^

関連するQ&A

  • 補数について質問です。「次の10進数を8ビットの2の補数に変換せよ」(

    補数について質問です。「次の10進数を8ビットの2の補数に変換せよ」(1)-111 まず絶対値をとり111にする。次に111を2進数で表す。0001 0001 0001となりますが、8ビットの2の補数に直すため0001 0001 0001の部分は8桁にしなくてはいけませんが、12桁になってしまいます。こういう場合どうすればいいのですか?

  • 補数について質問

    例えば2進数であれば、ある数aの補数はその数aの負の値ですが、 その理由は、最上位の桁を無視するからですか? 例えば10進数の10の補数では、39の補数は61ですが、最上位の桁を無視するので、-39が補数とも言えますよね? yesかNoかでお答え頂けましたら幸いです。 具体的な式で説明します、この考え方も正しいか判定してくだされば幸いです。 (ex:51-39 補数の概念で計算:51+(61-100)=12 (61-100)は最上位の桁を無視する式に対応していて、その答えは-39。

  • 補数

    10進数の補数の問題で、決められた数値が1000で与えられた数値が50のときの10の補数が50となるのは分かるのですが、桁数を8桁までに限定したときの10進数89467の10の補数を求めるという問題のとき、「桁数を8桁までに限定する」というのはどういうことなのか教えてください。

  • 補数について質問

    何度もすみません。 例えば2進数であれば、ある数aの補数はその数aの負の値ですが、 その理由は、桁あふれ無視するからですか? 例えば10進数の10^2の補数表示では、39の補数は61ですが、桁あふれを無視するので、補数表現としては61と-39は同じと考えられるからですか? yesかNoかで考え方が合っているか判定してください。 具体的な式で説明します、この考え方も正しいか判定してくだされば幸いです。 (ex:51-39 補数の概念で計算:51+(61-100)=12 (61-100)は最上位の桁を無視する式に対応していて、その答えは-39。

  • 補数について質問

    何度も何度もすみません。 例えば2進数であれば、ある数aの補数はその数aの負の値ですが、 その理由は、桁あふれ無視するからですか? 例えば10進数の10^2の補数表示では、39の補数は61ですが、桁あふれを無視するので、補数表現としては61と-39は同じと考えられるからですか? 絶対yesかNoかで考え方が合っているか判定してください。 絶対yesかNoかでお願いします。 具体的な式で説明します、この考え方も正しいか判定してくだされば幸いです。 (ex:51-39 補数の概念で計算:51+(61-100)=12 (61-100)は最上位の桁を無視する式に対応していて、その答えは-39。

  • 2の補数

    (1)10進数1、2、3の値を2進数3桁で記述しなさい。またこれらの2の補数を求め3桁で記述しなさい。 (2)2進数における「2の補数」は、コンピュータにおける数値の扱いにおいて重要な役割を担うことができる。その役割について説明しなさい。 (3) (1)の解答から(2)で解答した役割は適切に機能していることが分かる。その理由を説明しなさい。 (4)2進数で表記したある数値の「2の補数」の求め方としてして、「各桁の1と0を反転し、それに1を加える」という方法がある。この方法が成立する理由を説明しなさい。(ヒント:2^b-1がどういう数であるかを考えるとよい) この問題の(2)からどう説明していいか分かりません。 どなたか教えて下さい。

  • 補数について質問--僕はプログミングしてます

    例えば2進数であれば、ある数aの補数はその数aの負の値ですが、 その理由は、最上位の桁を無視するからですか? 例えば10進数の10^2の補数表示では、39の補数は61ですが、最上位の桁を無視するので、-39が補数とも言えますよね? yesかNoかでお答え頂けましたら幸いです。 具体的な式で説明します、この考え方も正しいか判定してくだされば幸いです。 (ex:51-39 補数の概念で計算:51+(61-100)=12 (61-100)は最上位の桁を無視する式に対応していて、その答えは-39。

  • 1と2の補数

    10進数整数0、11、13を1の補数に変換 10進数整数0、32、45、を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の補数について

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

専門家に質問してみよう