• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:補数について質問)

補数についての質問

このQ&Aのポイント
  • 補数とは、ある数の負の値を表す表現方法です。
  • 補数表現では、桁あふれを無視して計算します。
  • 補数の概念は正しい考え方であり、計算結果によってその正当性が確認されます。

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

  • ベストアンサー
  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.4

またですか? 貴方が確認したがっているのは、定義や定理ではなく その解釈なので、yes か no かに決まる話ではありません。 解釈や感想は、人それぞれなんですよ。 正数の補数を加えるときに桁あふれを無視すると、 もとの正数を引いたのと同じ結果になります。 そのことを以って、a の補数は -a だ と感じるならば、そう感じればよいのですが、 それは単なる感想です。 共感する人が多いだろうという意味で、妥当ではあるけれど、 誰もが共感しなければならない訳ではない。 違う感想を持つ人もいるでしょう。 この質問に「絶対yesかNoかで」なんて、ナンセンスです。

その他の回答 (3)

  • FT56F001
  • ベストアンサー率59% (355/599)
回答No.3

>2進数であれば、ある数aの補数はその数aの負の値ですが、 No, ここが違う。 補数の定義として,8bit処理系ではaの補数は256-aです。aの補数256-aは正の数です。 -aではありません。100の補数は156であって,-100ではありません。 aの補数が表すビットパターンで,-aを表すと約束することがある(補数表現された負の数), というだけで, 「aの補数が-a」ではありません。 8bit処理系で二進数の10011100はいくつを表しますか? この数がint形で宣言されていれば,-100を表します。 int形では「補数表現」の約束に従い,最上位MSB=1なら負の数と読むからです。 (8bitだと,-128~127を表す) この数がunsigned int形で宣言されていれば,156を表します。 unsigned int形では補数表現を適用せず,MSB=1の数でも正の数と読むからです。 (8bitだと,0~255を表す) 同じビットパターン10011100でも,宣言される形により表している数値は違います。 unsigned int形の156と,int形の-100のビットパターンは同じですが, 156=-100ではありません。

  • Willyt
  • ベストアンサー率25% (2858/11131)
回答No.2

 補数というのは、着目する数にそれを加えるとちょうど桁あがりする数で、これは二進数の補数も同じです。ただ、その作り方は実に簡単で、0と1を反転させたものに1を加えるのです。その理由は簡単です。反転させたものと元の数を加えるとすべての桁が1になりますから、これに1を加えるとちょうど桁あがりしますね。  そこで引き算なのですが、そうして作った補数を加え、最上桁の桁あがりを無視したものがその答えになります。  たとえば8-2を二進数で書くと 1000-10 になります。すると 2の補数は1101 +1=1110 となり 1000+1110=10110  で最上桁は桁あがりですからこれを無視すると答えは 110 つまり6となります。  

  • misawajp
  • ベストアンサー率24% (918/3743)
回答No.1

前の回答に示されている様に、質問者が独自の補数の定義を行い、それに捉われているからです 前の回答を 思い込みを棄てて 虚心坦懐に読むことです そして 数学の定義とそれを限定して定義したコンパイラの定義を確認することです 自己撞着の殻を打ち破らなければ、袋小路から抜け出せません 厳しい言い方をすれば、数学の補数の理解ができていないのに、丸暗記で凌ごうとしているだけです

関連するQ&A