- ベストアンサー
10進数からの変換なのですが・・・
どうしてもこの598に対する問題の答えが欲しいので、 分かる方、教えてください! お願いします!! 10進数598を2進数に変換すると、((1))になる。 1に対する補数は((2))で2に対する補数は((3))である。 また8進数は((4))で、16進数は((5))である。
- みんなの回答 (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の補数を求めるときだけなので、特殊な場合です。失礼しました。)
その他の回答 (2)
- anisol
- ベストアンサー率48% (146/301)
x(xは16bitの2進数とする)の1の補数は1111 1111 1111 1111(2進数)からxを引けばよいのです。xをビット反転したのと同じことです。 2の補数は1の補数に1を足せばいいです。桁上がりは無視します。 後はご自分で考えてみてください。それでもわからなかったら補足してください。 「xの2の補数を足す」という操作は「xを引く」という操作と同じことになります(桁上がりは無視する)。 これはコンピュータのCPUにとって、引き算が足し算に変わるので便利です。
お礼
補足ですが 2の補数は0110101010になったのですが・・の間違えでした・・。 すみません・・・
補足
説明ありがとうございます!! 考えてみたのですが、2の補数は、0101010110になったのですが・・(^^; 1の補数が分からないです。 本当に何回も申し訳ないのですが、よろしければ解答だけでもいいので 教えていただけないでしょうか。 お願いします。すみません。
598→1001010110(2進法) 598→1126(8進法) 598→256(16進法) 補数ってのがちょっと解りません。。m(__)m(1の補数と2の補数があるので) 下記が参考になると思います。 Windowsの関数電卓使えばすぐ出ますよ。>変換
お礼
素早い解答本当にありがとうございます(^^) 助かりました!!URLも参考になりました。 もう少しで試験があるのですが、頑張ります(^^)
お礼
丁寧で、分かりやすいご説明、ありがとうございました! ゆっくり考えながらしっかり勉強したいと思います。 本当にありがとうございました!!(^^)