- ベストアンサー
10進数を2進数に変換する方法と説明
- 10進数の数値を2進数に変換する方法について説明します。具体的な計算手順を示し、途中結果を示します。
- 10進数「44」を2進数に変換してみましょう。数値を2で割りながら余りを求め、下から順に並べていくことで2進数を得ることができます。
- 右に1ビットシフトすることや、ビットの計算方法についても詳しく説明します。さらに、(1×2^5+0×2^4+1×2^3+1×2^2+0×2^1+0)÷2の式の意味や、なぜ最後に2で割るのかについても解説します。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>これを2で割って余りを出すとは、どういうことですか。 これは設問ですか?なら文章通りです。 「数値44、(2進数で 101100 )を2で割りその余りを出せ、という事です。 10進数であれば「10で割る」のは「1桁右シフトする」のと同じ結果であり、 押し出された、もと最下位の1桁が「0」でないなら「割り切れない」のであり、 その数字1個がそのまま「余り」となります。 2進数でも同様です。2進数表現を右シフトする事が÷2をした事と同じ結果をもたらします。 >右に1ビットシフトして溢れたビット10進数の44を表す方法が分かりません。 溢れたビット=右シフトして押し出されたビットは「0」なので余りは「0」です。 44(2進数で101100)を右シフトしたものは、数値が44 の半分に変化したので、もう44ではありません。 >「(1×2^5+0×2^4+1×2^3+1×2^2+0×2^1+0)÷2」とは、どういうことですか。 >なぜ最後に2で割るのでしょうか。 10進数で「÷10」が1桁右シフトするのと同じ事なのと同様に 2進数では「÷2」は1桁右シフトするのと同じ事なのです。 >またこれが、 >(1×2^4+0×2^3+1×2^2+1×2^1+0)と説明されています。 >双方とも計算しても10進数の44にはなりません。 44 とは変化前の数値であり、シフトした事で変化したので違う数値に変わりました。 44を右シフト(つまり÷2)した数値ですから、22 となります。
その他の回答 (5)
- boiseweb
- ベストアンサー率52% (57/109)
老婆心ながら,質問者さんに忠告します. #5で,質問者さんの混乱の原因について「それは私にはわかりません」と書いたのは, (1) 教科書なり教授者の設問の意図は正確には何だったのか (2) 誤解の原因は教授者の説明不足にあるのか,それとも質問者さんの勘違いだったのか という,私が提示した疑問について, 【質問者さんは,きちんと理解して結論を出して,その結論をここでの回答者に語る責任がある】 という意味なのですよ. 少なくとも,#4で示された ======== 「44を2進数で表す方法の説明」の他に 「44を÷2する」という 2点のステップがあるのだと思ったのですが違うのですか? ======== に対して明確に答えるのが,すべての回答者への礼儀だと思います. >説明方法が悪いみたいですね。 という言い方は,「なんだかわからないけど,自分がわからなかったのは教授者の説明が悪いせいだと回答者が追認してくれた,自分の理解が足りないせいじゃなかったんだ,安心した」と言っているように聞こえます.そうだとしたら,それは私の意図に反するだけでなく,私を含むすべての回答者の気分を害する態度です. 新たな知識を学び取るということに対して,謙虚であってください.
お礼
ご回答ありがとうございます。 回答が謙虚ではなく申し訳ありませんでした。 もっと前向きに知識を得ようと思います。 ただ解説には「2で割って余りを出す」としか 書かれていなく、当方に解釈するのは難しく、 テキストの書き方が悪いと判断してしまいました。 以後、回答を頂いた際は気を付けたいと思います。 以上、ありがとうございました。
- boiseweb
- ベストアンサー率52% (57/109)
#3です. >「44を2進数で表す方法の説明」の他に >「44を÷2する」という >2点のステップがあるのだと思ったのですが違うのですか? しまったぁ! #4さんのこの指摘の可能性は思いもよりませんでした. ただ,件の教科書の設問(教授者の意図)が真にその指摘通りなのか,そうだとして,質問者さんの混乱の原因は教授者の教え方が悪いためか,それとも,単に質問者さんが誤解しただけか,それは私にはわかりません. 少なくともいえるのは,現実に混乱した学習者がいるということは,教科書なり教授者なりの「教える側」が失敗しているということです. 「2で繰り返し割る」方法を中心に10進2進変換を教える場合は,教授者は,こういう混乱を招く可能性をも十分考慮して,教授法を練る必要があると思います.
お礼
回答ありがとうございます。 説明方法が悪いみたいですね。 ありがとうございました。
No.1 です。 質問文に登場する計算式などから、質問者さんがお読みになってる著書?に 「44を2進数で表す方法の説明」の他に 「44を÷2する」という 2点のステップがあるのだと思ったのですが違うのですか? No.2,3さんの回答を肯定してるということは、違うのですかね。 でしたら回答 No.1 は私の勝手な想像による無意味な回答なので 無視してください。
- boiseweb
- ベストアンサー率52% (57/109)
#2さんと同じく,最後に2で割る云々は,教授者の勘違いである可能性が高いと思います. 個人的な感想ですが,10進2進変換を教えるメソッドとして「2で次々に割って余りを並べる」という手順をまっさきに教えるのは,リスクが大きい方法だと思っています.理由は次のとおりです. (1) 「なぜその手順が正当なのか」を初学者がイメージするのが困難. (2) (1)ゆえ,この方法での教え方を成功させるためには,教授法をものすごく慎重に練る必要がある(教授者が教え方に熟練している必要がある). (3) (1)(2)ゆえ,中途半端な教え方をすると,学習者が手順の正当性を心底理解できず,「公式として意味もわからず丸暗記」に陥る可能性が非常に高い. 下記の教科書は,(2)についてよく練られていて,「2で次々に割る」手順に基づく教授法として優れたもののひとつだと思います. 都倉信樹「コンピュータシステム入門」(岩波書店) 10進2進変換のやり方として,私が「初学者の直観に訴えやすい」と考えるのは,greedy approach(欲張り法),つまり,目的の数から(できるだけ大きい)2ベキの数を引き去るやり方です. 44 = 32 + 12 = 2^5 + 12 12 = 8 + 4 = 2^3 + 4 4 = 2^2 + 0 ゆえに 44 = 2^5 + 2^3 + 2^2 = (101100)_2 このやり方で計算練習をたくさんして「2進表記とは何か」についてのイメージを十分に養っておいて,その後に「速算のための便利な方法」として,2で次々に割る方法を教えるのが,無難な(失敗が少ない)教え方だと思っています. greedy approachをメインに10進2進変換を教えるメソッドについては,下記の本が参考になります. Tim Bell/Ian H.Witten/Mike Fellows (著), 兼宗 進 (翻訳) 「コンピュータを使わない情報教育 アンプラグドコンピュータサイエンス」イーテキスト研究所
お礼
ご丁寧な回答ありがとうございます。 44 = 32 + 12 = 2^5 + 12 12 = 8 + 4 = 2^3 + 4 4 = 2^2 + 0 ゆえに 44 = 2^5 + 2^3 + 2^2 = (101100)_2 (この「_2」は何を注しているのでしょうか) この方法は使えますね。 ただし2の倍数を理解していないと難しいですが、 考え方としては非常に簡単だお思いました。 また、著書の情報ありがとうございました。
- Mr_Holland
- ベストアンサー率56% (890/1576)
>これを2で割って余りを出すとは、どういうことですか。 >右に1ビットシフトして溢れたビット10進数の44を表す方法が分かりません。 >「(1×2^5+0×2^4+1×2^3+1×2^2+0×2^1+0)÷2」とは、どういうことですか。 >なぜ最後に2で割るのでしょうか。 私もおかしいと思います。 2で割る必要はありません。理屈にも合いません。 もし記された方法で1を2進数にしてから10進数に戻すと 1/2 になってしまいますものね。
お礼
ですよね。 著者の間違いでしょうか。 ご回答ありがとうございました。
お礼
「10進数数値44(2進数で101100 )を 2で割りその余りを出せと言うのが分かりません。 ÷2と÷10がシフトをする為と分かりました。 しかしなぜシフトする必要があるのでしょうか。 「(1×2^5+0×2^4+1×2^3+1×2^2+0×2^1+0)」で、 10進数の44を2進数に変換することができるではありませんか。 ÷2をしてシフトした場合、性格な2進数は得られないと思います。 シフトする理由を詳しく教えて頂けないでしょうか。 以上、よろしくお願い致します。