• ベストアンサー

10進数の補数

基本情報のテキストのコラムに載っていたことなのですが理解できません 「10進数の補数の場合だと、9の補数と10の補数があることになりますね。 たとえば、2桁の範囲で考えると、 70の9の補数は99-70=29、 10の補数は100-70=30、 となりますね」 ・・・ 意味が・・・わかりません 一応、1の補数、2の補数 については勉強したばかりで理解できているつもりです。 教えてください。 お願いいたします

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

  • ベストアンサー
noname#33973
noname#33973
回答No.2

>1の補数、2の補数については勉強したばかりで理解できているつもりです とありますが、思うに、azicyanさんは、1の補数、2の補数について、 ・2の補数は各ビットの1と0を反転したものに+1したもの ・1の補数は各ビットの1と0を反転させたもの といったふうに理解されているのではないでしょうか? だとしたら、10進数における9の補数や10の補数はもちろん、2進数以外の補数については全く定義されていないわけですから、お尋ねの文が意味不明なのも当然です。 ・2の補数は各ビットの1と0を反転したものに+1したもの ・1の補数は各ビットの1と0を反転させたもの といった考え方は、実際に2進数の補数を求める際には便利ですが、もともとの定義ではありません。 補数のもともとの定義は、 ・ある数が、ある基準となる数となるために加える必要がある数 です。 「ある基準となる数」には2つの考え方があり、 1) その桁で最大の数になるもの 2)ちょうど次の桁へ繰り上がりになるもの があります。 例えば、2進数3桁の場合、「ある基準となる数」は前者が111、後者が1000で、それから元の数を引いたものが、それぞれ1の補数、2の補数となります。 一方、10進数2桁の場合は、「ある基準となる数」は前者が99、後者が100で、それから元の数を引いたものが、それぞれ9の補数、10の補数となります。 この質問で初めて「補数」という言葉を知った者ですので勘違い等ありましたらご容赦くださいませ。(汗

azicyan
質問者

お礼

とても詳しく助かります。 >といったふうに理解されているのではないでしょうか? はい!!そのとうりです!! >実際に2進数の補数を求める際には便利ですが、もともとの定義ではありません。 ・・そうだったのですね・・・・ >一方、10進数2桁の場合は、「ある基準となる数」は前者が99、後者が100で、それから元の数を引いたものが、それぞれ9の補数、10の補数となります。 ありがとうございます だいぶわかりました! >この質問で初めて「補数」という言葉を知った者ですので勘違い等ありましたらご容赦くださいませ。(汗 えーーー!?!? すごい・・・・ すぐにこれだけわかってしまうなんて・・・ ありがとうございました。

その他の回答 (2)

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.3

補数と言うのは引き算をする代わりに足し算で代用する方法として考えられました。 10進数6桁で考えます。 10の補数は1000000が基準になります。 9の補数は999999が基準になります。 10の補数と9の補数の違いの意味は基準の数を見るとわかりますね。 2の補数と1の補数も同じ見方をしてみれば理解が深まるでしょう。

azicyan
質問者

お礼

>補数と言うのは引き算をする代わりに足し算で代用する方法として考えられました。 そうなんですね! 初めて知りました! 回答ありがとうございました!

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

goo辞書 - 補数 http://dictionary.goo.ne.jp/search.php?MT=%CA%E4%BF%F4&kind=jn 「補数」は、一定の数(A)からその値(B)を引き算した結果(C)のことを言います。 > 70の9の補数は99-70=29、 合ってますね。 ちょっと読み方を変えて、「Bに対するAの補数Cとは、足してAになる数」のように読み替えてみては? -- のように考えると、 「7の9に対する補数は2だ。」 「70の99に対する補数は29だ。」 「700の999に対する補数は299だ。」 「7000の9999に対する補数は2999だ。」 という事が言えます。 対象の数の桁数は何桁あるか分からないのが普通ですので、「9の補数」という言い方にしてしまい、1桁の場合は9から、2桁の場合は99から引き算するという考え方をします。

参考URL:
http://dictionary.goo.ne.jp/search.php?MT=%CA%E4%BF%F4&kind=jn
azicyan
質問者

お礼

ありがとうございます。 >1桁の場合は9から、2桁の場合は99から引き算するという考え方をします。 そうなのですね! わかってきました!!

関連するQ&A

  • 2の補数

    2進数で4桁の数を考える場合、2の補数では基数が〔10000〕となり、1の補数では「1111」となります。 なぜ、4桁の基数は同じ4桁の「1000」とならず5桁の「10000」となるのでしょうか? どなたか。教えてください。

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

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

  • 2進数の補数表示について

    よろしくお願いします 「負の数(-128)を8ビットの2の補数表示するとき、どうなるか?」 の問題で、わからない箇所があります。 1.最上位ビットは正・負を表す。 2.負の数:-127を2の補数を使用して表現する。    (例)-1(10)==>    まず、正で考える。      ==> 0000 0001(2)      「確認」 1111 1110(反転)            +1(プラス1) ---------- 1111 1111(2)(答え) -127(10)      ==>0111 1111(2)  まず、正で表す。    「確認」        1000 0000(反転)           +1 (プラス1) ---------- 1000 0001(答え) ここからが疑問なんです。    -128(10)の場合      ==>1000 0000(2) まず、正で考える。    「確認」        0111 1111(反転) +1 (プラス1)       -----------      1000 0000(2)(答え) ↑ ・答えがプラスの128(10)=>10000000(2)と同じではない  でしょうか? ・このときの最上位ビットは桁上がりの「1」と正負の違  いを表す「1」のどちらを表しているのですか? ・たとえば「負数を2の補数で表すとき,8ビットで  表現できる整数の範囲は10進数でどれか。」など  の問題で答えが正の127は理解できるのですが、  負は「-128」ということがよくわかりません。 一応検索をしてみましたが、類似回答では理解できませんでした。よろしくお願いします。        

  • 2の補数について

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

  • 1の補数表現

    昔の本を買って情報処理の勉強をしているのですが ふに落ちない事がありまして質問させていただきます。 符号付の整数を8ビットの2進数であらわす時、1の補数表現で最小の数は-128である。 と言う問題がありまして回答が正しいとなっていました。 しかし自分は-127までしか表現できないと思いまして。。。 2の補数表現なら-128~127まで表現できると思うのですが 1の補数表現なら-127~127までしか表現できないと思います。 詳しい方がいましたらよろしくお願いします。

  • 2の補数について

    みなさん教えてください。 今、情報関係の仕事に就き資格を取ろうと思っています。 その資格試験の問題に、下記のような問題が出てきて困っています。 考え方と回答を教えて頂けませんか。 お願いします。 (問題) 「16ビットを2の補数で表したとき、10進数の範囲は?」

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

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

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

専門家に質問してみよう