• ベストアンサー

1の補数

1の補数の利点はなんですか? 絶対値表現と比べて直感的に分かりにくく、また2の補数と比べても表示できる数値が1つ少ないとあまり必要性を感じません。 それとも1の補数は2の補数を表現するための途中式と考えたほうが良いのでしょうか? どなたかご教授お願いします。

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

  • ベストアンサー
  • maku_x
  • ベストアンサー率44% (164/371)
回答No.2

数学的に「1の補数」と言ってしまうと、重要な意味はありませんが、「ビット反転」と言う演算と見なすと、実は重要な意味を持ちます。例えば、白黒2値の画像(FAXに使われる画像ですね)の白と黒を入れ替える際に「ビット反転」と言う演算を行います。2の補数を取って1足せば同じ結果が得られますが、それでは2度手間になってしまいます。ビット反転は画像処理の世界では必須の演算の1つです。

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

その他の回答 (1)

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

1の補数のの利点はビットの反転だけで補数が取れるので電子回路が簡単で澄みます。手計算も楽です。 ただし0が(+0と-0)の2つができてしまうというきれいさを欠くこともあり今では一部をのぞいて「2の補数」全盛です。 まー通過点としての意味は有りますが、かえって混乱する面もあります。

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

関連するQ&A

  • 補数について質問

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

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

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

  • 補数について質問

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

  • 1の補数表現

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

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

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

  • 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進数で 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. 実際には 本のように引く数だけを補数にして足し算をして答えを求めているのか、 それとも私のように正の値・負の値、ともに符号付きの表現にして足し算をしているのか、 もしくは、いずれとも違うのか、どうなのでしょうか? また、参考文献などがありましたらご紹介お願いします。 以上ですがよろしくお願いします。

  • 1の補数の2進数での減算(基本的な事だけど)

    たとえば(13)10=(01101)2, (8)10=(01000)2 という数値を元に考えてみます。 1の補数なので (-13)10=(10010)2 , (-8)10=(10111)2 となります。 ここで8+(-13)と(-8)+13を求めたいのです。 <8+(-13)> ((01000)2 +(10010)2 ((11010)2 bit反転→ (00101)2 = (5)10 よって (11010)2 = (-5)10 <(-8)+13> (((10111)2 +((01101)2 ((100100)2 bit反転→ (011011)2 = ?? どうして答えが5の2進数表現にならないのでしょうか? 解き方が違うのならば、その理由が知りたいのです。

  • 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進演算について。

    以下の問題でのこの答えが合っているか自信が無いので確認と間違いがあれば指摘をお願いします。 (1)次の整数を8bitsの符号+絶対値表現、2の補数表現、127増し表現で表現しなさい。    -20    +55 (2)次の10進小数を、32ビットの浮動小数点表示しなさい。    -123.8125 答(1) -20 (+絶対値表現)→ 1001 0100 (2の補数表現) → 0001 0100 (127増し表現) → ? -20の+絶対値表現というのはそのまま20の8bit表示でいいんでしょうか? マイナスなので一番左のビットに1を立てればいいだけでしょうか? それと-20の2の補数表現は-20の2進表現を逆数にして1足すので結局20の2進数でいいのでしょうか? +55 (+絶対値表現)→ 0011 0111 (2の補数表現) → 1100 1001 (127増し表現) → ? これは+なので普通に考えてこの答えで間違いがあるでしょうか? それといずれの問題でも「127増し表現」というのはどうすればいいのでしょうか? 答(2) -123.8125の32ビット浮動小数点表示は 123.8125(10進)→ 111 1011.1101(2進) 0.11110111101×2^7 (正規化) で、32ビットの浮動小数点表示は 1 00000111 11110111101000000000000 なると思うのですが、どうでしょうか? 解答と指摘をお願いします。