• ベストアンサー

10進数からの変換なのですが・・・

どうしてもこの598に対する問題の答えが欲しいので、 分かる方、教えてください! お願いします!! 10進数598を2進数に変換すると、((1))になる。 1に対する補数は((2))で2に対する補数は((3))である。 また8進数は((4))で、16進数は((5))である。

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

  • ベストアンサー
  • anisol
  • ベストアンサー率48% (146/301)
回答No.3

簡単に4bitで考えてみましょう。 1010(10進数で10)の1の補数はビット反転すればいいので、 0101(10進数で5)になります。2の補数はこれに1を足すと 0110(10進数で6)。 0001(10進数で1)の1の補数はビット反転して 1110 2の補数は、1を足して 1111 1-1=0の式が成り立つか?1-1を1+(1の2の補数)と変形して2進数で足し算してみます。  0001 +1111 ----- 10000 桁上がりを無視すると見事に0になっていますね。 さて肝心の598ですが16bitの2進数で表わすと 0000 0010 0101 0110 ビット反転して1の補数を求めると 1111 1101 1010 1001 これに1を足して2の補数にすると 1111 1101 1010 1010 (なお先の私の回答で2の補数を求めるとき桁上がりは無視しますと書きましたが、桁上がりするのは0の2の補数を求めるときだけなので、特殊な場合です。失礼しました。)

aki_21
質問者

お礼

丁寧で、分かりやすいご説明、ありがとうございました! ゆっくり考えながらしっかり勉強したいと思います。 本当にありがとうございました!!(^^)

その他の回答 (2)

  • anisol
  • ベストアンサー率48% (146/301)
回答No.2

x(xは16bitの2進数とする)の1の補数は1111 1111 1111 1111(2進数)からxを引けばよいのです。xをビット反転したのと同じことです。 2の補数は1の補数に1を足せばいいです。桁上がりは無視します。 後はご自分で考えてみてください。それでもわからなかったら補足してください。 「xの2の補数を足す」という操作は「xを引く」という操作と同じことになります(桁上がりは無視する)。 これはコンピュータのCPUにとって、引き算が足し算に変わるので便利です。

aki_21
質問者

お礼

補足ですが 2の補数は0110101010になったのですが・・の間違えでした・・。 すみません・・・

aki_21
質問者

補足

説明ありがとうございます!! 考えてみたのですが、2の補数は、0101010110になったのですが・・(^^; 1の補数が分からないです。 本当に何回も申し訳ないのですが、よろしければ解答だけでもいいので 教えていただけないでしょうか。 お願いします。すみません。

noname#1280
noname#1280
回答No.1

598→1001010110(2進法) 598→1126(8進法) 598→256(16進法) 補数ってのがちょっと解りません。。m(__)m(1の補数と2の補数があるので) 下記が参考になると思います。 Windowsの関数電卓使えばすぐ出ますよ。>変換

参考URL:
http://www.geocities.co.jp/Playtown-Dice/5061/sansu/2nohosu.htm
aki_21
質問者

お礼

素早い解答本当にありがとうございます(^^) 助かりました!!URLも参考になりました。 もう少しで試験があるのですが、頑張ります(^^)

関連するQ&A