- ベストアンサー
10進数から2進数への変換
こんにちは。 10進数から2進数への変換をせよという問いの場合、2で割っていくというのが基本的な考えですよね。割り算を使わずに10進数から2進数に変換する方法というのはあるのでしょうか?ご存知の方いましたらご教授ください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No.1の補足です。 10進数の数字は、右から見ていくと、各桁の重みが10^0(10の0乗),10^1(10の1乗),10^2(10の2乗)・・・になっています。 例えば、123でしたら、3*10^0 + 2*10^1 + 1*10^2です。 ということは、100で割ると商が100の位の1になります。 あまりは23です。これを10で割ると商が2であまりが3。 3を1で割ると商が3。当然あまりなし。 つまり、10^nの大きい方から割って、あまりを次の10^nで割ることを繰り返していくと 123÷100=1あまり23 23÷10=2あまり3 3÷1=3 で商を並べると123になりますね。 2進数の場合も同じです。 123÷64=1あまり59 59÷32=1あまり27 27÷16=1あまり11 11÷8=1あまり3 3÷4=0あまり3 3÷2=1あまり1 1÷1=1 で、商を並べると1111011です。 2のn乗は、1,2,4,8,16,32,64,128,256,512,1024,2048,・・・ですが、そのうちこれがキリのいい数字に見えてくるかもしれません。 ちなみに、質問の2で割っていく方法は、2^nの小さいほうから割ってあまりを並べているのと同じです。
その他の回答 (5)
- tacky-express
- ベストアンサー率31% (15/47)
2で割っていくのも、なるたけ大きな2の累乗を引くのも、実はやってることの本質は同じだったりします。どちらもひたすら2の累乗を計算していることなのですから(2でひたすら割っていくのは、2の累乗で割るのと同じですね?)。要するに、2の整数乗を考え、2^n、2^(n-1)、2^(n-2)……2^2、2^1、2^0、の位が1か0かを考えればいいのです。 実際に計算を書いてみるとわかりますが、2で割っていくのは2進数を下の位から求めていく方法、2の累乗を引いていくのは2進数を上の位から求めていく方法、その違いです。
- sanori
- ベストアンサー率48% (5664/11798)
#1の者です。 >しかし狐につままれた感です。 >どうして2のn乗を引き算するとこのような結果になるのでしょうか。 なーに。簡単なことなんですよ。 512円玉 256円玉 128円玉 ・・・ 4円玉 2円玉 1円玉 これらの硬貨が1枚ずつある財布から261円ちょうどを支払うのに、どうやって払うかということです。 261円ちょうど支払うためには 256円玉1枚、4円玉1枚、1円玉1枚。 ほかは全部ゼロ枚。 これを2進数で表わすと 100000101 いかがですか?
お礼
ご回答ありがとうございます。 具体的に書いていただいて、仕組みがまた理解できてきました。分かりやすかったです。 ありがとうごさいます。
- seyber
- ベストアンサー率25% (33/128)
こんにちは。^^ 右手の親指を0(1) 人差し指を 2 中指を 4 薬指を 8 小指を 16 とします。 0、2、4、8、16です。 手を握りリセット(0)にします。 8なら薬指を立て、1000 10なら薬指、と人指し指を立て、1010 左手の小指は32 薬指は64です。
お礼
こんばんは。ご回答ありがとうございます。 指でカウントする、面白い方法ですね。 分かりやすいです。参考になりました。ありがとうござました。
- z-knight
- ベストアンサー率36% (112/304)
こんにちは ご存知かもしれませんが、指を使って数える方法があります。 指を立てたり立てなかったりして0,1を区別します。(指を立てれば1、立てなければ0) 右手から始めます。10進法の1の時は右手の親指を立てます(=2進法の1)。10進法の2の時は人差し指を立てて親指は立てません(=2進法の10)。3の時は人差し指と親指を立てます(=11)。このようにやっていけば、ある程度の大きさまでは数えられます。せいぜい32くらいまでですが。 分かりにくかったらすみません
お礼
早速のご回答ありがとうございます。 面白い方法ですね! 参考になりました。ありがとうございました。
- sanori
- ベストアンサー率48% (5664/11798)
引き算で出来ます。 なるべく大きい2のn乗を引き算する、を何度も繰り返して、最後1を引き算するところまで続ければいんです。 例えば261を2進数にするとすれば 261から512は引けない。 余り261 261から256は引ける→1 余り5 5から128は引けない→0 余り5 5から64は引けない→0 余り5 5から32は引けない→0 余り5 5から16は引けない→0 余り5 5から8は引けない→0 余り5 5から4は引ける→1 余り1 1から2は引けない→0 余り1 1から1は引ける→1 おしまい 答え 100000101
お礼
早速のご回答ありがとうございました。なるほど、引き算でできるのですか!!しかし狐につままれた感です。どうして2のn乗を引き算するとこのような結果になるのでしょうか。
お礼
ご回答ありがとうございました。 なるほど、仕組みが次第に理解できてきました。 参考にしたいと思います。 ありがとうございました。