- ベストアンサー
2の補数とは?重要な役割と求め方を解説
- 10進数1、2、3を2進数3桁で表すと?2の補数も求める方法とは?
- 2の補数はコンピュータにおいて重要な役割を果たす
- 2の補数の役割が適切に機能する理由や求め方について解説
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
(1)は、おそらく001,010,011、補数は111,110,101になったと思います。 (2)は、「最初の桁が0なら正の数、1なら負の数になる」という事だと思います。 だとすれば、(3)は(1)が実際にそうなっている、で答えになると思います。 普通は8桁とか16桁とかですけどね…。 (4)たとえば1を表す時、+1は001、-1は111でした。 +1 + -1 = 0と同様に2進数でも計算すると、 001 + 111 = 1000ですが、この場合、3桁での記述なので、4桁目はオーバーフローとなり、 000が答えになります。 つまり、反転して1を加える事で、足すと0になる数を作れるので、成立している、と。 2^b-1は、bは桁数を示しており、それ以上の数は扱えない(オーバーフローする)事を示していると思われます。 ちなみに、8桁だと-1は11111111になりますね。 000000001を足すと、9桁目がオーバーフローするので、00000000になります。 以上でよろしいでしょうか…?
その他の回答 (2)
- info22_
- ベストアンサー率67% (2650/3922)
10進数は数値の後に(10)を付け、2進数は数値の後に(2)を付け、 2進数の負数は数値の後に(2の補数)を付けることにします。 (1) 1(10)=001(2), 111(2の補数) 2(10)=010(2), 110(2の補数) 3(10)=011(2), 101(2の補数) (2) 負数を扱えるようになる。 2の補数を取ることで減算を加算で行える。 (3) 1+(-1)=001(2)+111=000(2)=0(10) 2+(-2)=010(2)+110(2の補数)=000(2)=0(10) 3-1=3+(-1)=011(2)+111(2の補数)=010(2)=2(10) (-1)+2=111(2の補数)+010(2)=001(2)=1(10) 2-3=2+(-3)=010(2)+101(2の補数)=111(2の補数法)=-1(10) (4) a3a2a1(2)の2の補数をb3b2b1(2)とすると a3a2a1(2)+b3b2b1(2の補数)=000(2) …(A) a3a2a1(2)の1の補数をc3c2c1(2)とすると a3a2a1(2)+c3c2c1(1の補数)=111(2) 両辺に1=001(2)を加えると a3a2a1(2)+c3c2c1(1の補数)+001(2)=111(2)+001(2)=000(2)…(B) (A)と(B)を比較すると b3b2b1(2の補数)=c3c2c1(1の補数)+001(2) …(C) と言う関係にあります。 この関係は、2の補数は1の補数に1=001(2)=1(10)を加えて得られることを表します。 なお、c3c2c1(1の補数)は a3+c3=1 a2+c2=1 a1+c1=1 という関係にあります。
お礼
なるほど! 丁寧な解説ありがとうございます。
- k_kota
- ベストアンサー率19% (434/2186)
多分計算機学とかの教科書の加算器とか減算関係のあたりにここらへんの内容があると思います。 とりあえず、2進数とか2の補数は分かってると仮定します。 適当に2進数を決めてください、次にその数の2の補数を求めてください。 それを足しあわせてみてください。 それを3つくらいの数でやってみると面白いですよ。 それが分かれば3も分かるかな4もね
お礼
わかりやすかったです! ありがとうございます。