• ベストアンサー

10進数から2進数への変換

初級シスアドを勉強している者です。10進数から2進数に変換する方法で2で割っていく方法は知っているのですが、解くのに時間がかかってしまいます。もっと早く変換できる方法はありませんか?

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

  • ベストアンサー
  • morigann
  • ベストアンサー率17% (57/329)
回答No.1

2進数のそれぞれの値を覚えたらどうでしょうか? 00000001=1 00000010=2 00000100=4 00001000=8 00010000=16 00100000=32 01000000=64・・・のように。 21なら、16+4+1なので00010101

lamm
質問者

お礼

回答ありがとうございます。 なるほど2^0だと一番右側が1で2^1、2....と増えていくごとに1を左側にスライドさせればいいのですね。こんな覚え方思いつきませんでした。morigannさんに20pt差し上げたいところですが、違う考え方もあるかもしれないので、もう少し締め切らずに待ってみます。

その他の回答 (2)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.3

さらにANo.1・ANo.2と同じことですが。 情報処理技術者試験を受験する人にとって2の-4乗~2の16乗は,小学生が九九を暗唱するのに匹敵する要点だと思います。 -------------------------------- (00000000 00000001)2 = ( 1)10 (00000000 00000010)2 = ( 2)10 (00000000 00000100)2 = ( 4)10 (00000000 00001000)2 = ( 8)10 (00000000 00010000)2 = ( 16)10 (00000000 00100000)2 = ( 32)10 (00000000 01000000)2 = ( 64)10 (00000000 10000000)2 = ( 128)10 (00000001 00000000)2 = ( 512)10 (00000010 00000000)2 = ( 1024)10 (00000100 00000000)2 = ( 2048)10 (00001000 00000000)2 = ( 4096)10 (00010000 00000000)2 = ( 8192)10 (00100000 00000000)2 = (16384)10 (01000000 00000000)2 = (32768)10 (10000000 00000000)2 = (65536)10 (0.1 )2 = (0.5)10 (0.01 )2 = (0.25)10 (0.001 )2 = (0.125)10 (0.0001)2 = (0.0625)10 -------------------------------- これらの値を暗記できていれば,値を組み合わせたり,値からの差分を増減したりすることで,10進→2進への変換ができます。 例1…(100)10 = 64 + 32 + 4 = (01100100)2 例2…(130.125)10 = (128 + 2) + 0.125 = (10000010.001)2

lamm
質問者

お礼

回答ありがとうございます。 2の16乗まで九九レベルで暗記ですか、頑張ります。

  • nac03056
  • ベストアンサー率48% (203/419)
回答No.2

私の場合、同じことですが、 1024より大きければ1、そうでなければ0。 1024を引いた値が512より大きければ1、そうでなければ0。 512を引いた値が256より大きければ1、そうでなければ0。 256を引いた値が128より大きければ1、そうでなければ0。 128を引いた値が64より大きければ1、そうでなければ0。 64を引いた値が32より大きければ1、そうでなければ0。 32を引いた値が16より大きければ1、そうでなければ0。 以下続く と紙に0101を書き、ブツブツ呟きながら引き算しています。 すでに回答に出ている 1、2、4、8、16、32、64、128・・・を覚えておけばそこそこ使えます。ちなみに、2進→10進はこの逆で、2進数の右から 1+2+4+8+16+32+64+・・・と、1のある桁だけ足し算すればいけます。

lamm
質問者

お礼

回答ありがとうございます。 やはり1、2、4、8、16、32、64、128・・・を覚えて応用するのが早いのですね

関連するQ&A

専門家に質問してみよう