• ベストアンサー

2進数・10進数・16進数

過去ログみてもよく分からなかったので質問します。 題名の通り 2進数→10進数(逆に10進数→2進数)などといったような変換ができません。1学期に授業でやったのですが授業プリントなくしてしまい・・・ 例えば(教科書見ながら書いてます) (1)2進数「0010」がどうして10進数で「2」なんですか(計算方法教えてください?? ↑2進数「0010」を色々計算して「2」を出したような気がします。 (2)16進数から2進数への変換も計算方法を教えてください。 例:16進数「C」がなぜ2進数「1100」なんですか?

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

  • ベストアンサー
  • Quattro99
  • ベストアンサー率32% (1034/3212)
回答No.8

すでにある回答とおなじことですが、2進法では2集まると繰り上がり、10進法では10集まると繰り上がります。 10進法では一桁目を一の位、二桁目を十の位、三桁目を百の位といいますが、これは10^0の位、10^1の位、10^2の位ということです。一桁目は1がいくつあるか、二桁目は10がいくつあるか、三桁目は100がいくつあるかを意味しています。 2進法も同じように考えられます。一桁目が2^0の位、二桁目が2^1の位、三桁目が2^2の位となります。一桁目は1がいくつあるか、2桁目は2がいくつあるか、3桁目は4がいくつあるかということです。 これを一般的にすれば、x進法の場合、n桁目はx^(n-1)がいくつあるかを示しています(うっかりしやすいので、x^nではないことに注意してください)。 なので、x進法を10進法にするのは割と簡単です。しかし、逆はかなり面倒です。基本的には#5さんのようにして計算するしかありません。 逆が面倒なのは人間が10進法を標準に考えるからです。というか、10進法以外で考えることがほとんど不可能だからです。 仮に2進法で考えられる人がいれば、その人には上で書いたような方法で簡単に10進法→2進法に直すことが出来ます。 以下、2進法で考えてみます(10進法の世界で言う2進法は、2進法の世界では10進法と呼ばれることになります。10進法の世界で言う10進法は2進法の世界では1010進法と呼ばれることになります)。 ↓以下「」内は、2進法の世界での話 「1010進法の1桁目は1010^0がいくつあるのかを、10桁目は1010^1がいくつあるのかを、11桁目は1010^10がいくつあるのかを意味しています。」 どうでしょうか。とても2進法の世界の考え方をすることは出来ないことがわかると思います。

shushu77
質問者

お礼

分かりやすくありがとうございました。 よく分かりました。参考にさせていただきます。

その他の回答 (7)

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.7

桁上がりについて理解できていないようですね。 2進数は数字が2になると桁が上がる数値の表記方法です。 10進数で ”1” は2進数で ”1” 10進数で ”2” は2進数では桁上がりするので(1+1) ”10” 10進数で ”3” は2進数では桁上がりなし(10+1)で ”11” 10進数で ”4” は2進数では桁上がりするので(11+1) ”100” こんな感じです。 そして計算で求めたと言うのは、各々の桁の数値が示す値を足しただけです。   1111(2進数)   これは4桁あるので、   (2^3 x1)+(2^2 x1)+(2^1 x1)+(2^0 x1)    ※(2^3)は2の3乗、(2^2)は2の2乗を示す  一番下の桁が1で桁が上がるにつれて下の桁上がりする数値倍になっていきます。  別の書き方をすると   (2x2x2 x1)+(2x2 x1)+(2 x1)+(1x 1)   (8 x1)+(4 x1)+(2 x1)+(1 x1) ですので、0010(2進数)は   (2^3 x0)+(2^2 x0)+(2^1 x1)+(2^0 x0) で、10進数の2を示します。 桁上がりについて、まだよく分からないと思いますので身近な例をあげてみます。 時間は時分秒で表示される60進数とみなすことができます。 60秒で桁上がりして分に、60分が桁上がりして時になります。 10~59と言う数字はありますが、これは記号と思えば60進数と言えます。 計算も例にあげてみましょう。  5025秒(10進数)は何時間何分何秒(60進数)になるか。    5025÷60=83…45 83分あまり45秒    83÷60=1…23   1時間あまり23分  逆に、1時間23分45秒(60進数) は何秒(10進数)になるか。  上の式を見ると時間のあまりは60を2回割って出てきています。もどすなら2回掛ける。  同様に分の数字は60を1回割って出てきています。もどすには1回掛ける。    (60x60x1)+(60x23)+(1x45)=5025 そして16進数 16進数は数字が16になったら桁が上がる数値の表記方法です。 10進数で ”1” は16進数で ”1”          (中略) 10進数で ”15” は16進数では桁上がりしないので ”F” 10進数で ”16” は16進数では桁上がりするので ”10” 10進数において1~9までは一桁で表記できますが、10から桁上がりする直前の15までは一桁で表記できません。 そのため10~15の数字にA~Fの【記号】を割り付けています。 割り当てを覚えられなければ、ノートのすみに10~15の数字を書いて、そこにA~Fの記号を割り当ててみましょう。 すると、C(16進数)に対する10進数の数字は12になることが分かります。 これを2進数に変換すると1100になります。 ついでに・・・ 16進数と2進数がペアで出題されるのは、2進数を4桁づつ区切ると16進数の表記に近づくからです。 例:A3C5(16進数)  A ,  3 , C ,  5  (16進数) 1010,0011,1100,0101 (2進数)  ※分かりやすくするためカンマ(,)で区切りました これ以上深い意味はありません。 2進数を10進数に直すときのテクニック・・・ 覚えておくポイント  1 0000 0000から1を引くと、1111 1111になります。  (256から1を引くと255。128+64+32+16+8+4+2+1を計算するより早い                       ※足し算するだけが計算じゃない) 計算例 1101 1011(10進数を知りたい)  1101 1011 これは、  1111 1111(255) から  0010 0100(32+4) を引いた値と等しいです。

shushu77
質問者

お礼

詳しくありがとうございました。 さんこうにさせていただきます。

  • sakuuuuu
  • ベストアンサー率32% (67/209)
回答No.6

2進数は2で繰り上がります。 10進数の場合、9の次が10 2進数の場合、1の次が10です。 以下は計算時のテクニックです。 2進数→10進数変換 101101という2進数を10進数に直す場合、 6桁あるので右から1,2,4,8,16,32と倍した数値を振っていきます。 そして1のある桁数の数値をたす。 1+4+8+32=45 この本に書いてある http://www.amazon.co.jp/gp/product/4532403596/sr=1-12/qid=1164127389/ref=sr_1_12/250-9764338-1932214?ie=UTF8&s=books 福嶋はすごい分かりやすい。

shushu77
質問者

お礼

分かりやすく解説ありがとうございます。

  • char2nd
  • ベストアンサー率34% (2685/7757)
回答No.5

 2進数で「0010」の場合、  2^3×0+2^2×0+2×1+0=2 となります。(注:「^」はべき乗で、2^3は「2の3乗」を意味する)  従って、「0100」は「4」、「1000」は「8」となります。  16進数の場合、15までの数値を1桁で表しますが、「10」から「15」までは「A」~「F」で表記します。  「C」は10進法だと「12」に相当しますから、2進法だと  12÷(2^3)=1 mod 4  4÷(2^2)=1 mod 0  以下は「0」となるので、「1100」となります。

shushu77
質問者

お礼

なるほど・・・ よく分かりました。ありがとうございました!

回答No.4

(1) 2進数「0010」一番右は1、2番目は2、3番目は4、4番目は8を意味しています。 つまり、右からN番目の桁は2のn-1乗の数字を意味しています。 なので、0010は 8*0+4*0+2*1+1*0=2となります。 参考までに1111ならば 8*1+4*1+2*1+1*1=15となります。 (2) 16進数で英語が出てくるのは0~9まででは表示する数字が足りないからです。なので9の次はA,B,C・・・となります。 つまり、Aが10、Bが11、Cが12となります。 なので16進数「C」は10進数に直すと12。 これを2進数に直すと8*1+4*1+2*0+1*0=12なので「1100」です。

shushu77
質問者

お礼

分かりやすくありがとうございました。 参考にさせていただきます。

  • mgkg
  • ベストアンサー率37% (79/212)
回答No.3

0×(2×3乗)= 0 0×(2×2乗)= 0 1×(2×1乗)= 2 0×(2×0乗)= 0         +) 2 上記が2進数「0010」が10進数で「2」になる計算過程になります。 「重み」って言われる、X乗をそれぞれの桁にかけていき、最後にその合計をします。

shushu77
質問者

お礼

分かりやすいです、ありがとうございました!

  • rtz
  • ベストアンサー率48% (97/201)
回答No.2

http://www.net-newbie.com/tcpip/radix.htmlhttp://www.e-kyozai.jp/cgi-bin/suguru/semi/sf3_9/kiso/s3_9_3.html など参考に。 ちなみに16→2は初めは16→10→2とやった方がいいでしょう。

shushu77
質問者

お礼

サイト教えていただきありがとうございます。参考にして頑張ります。

  • excite33
  • ベストアンサー率2% (1/39)
回答No.1

1010 A 1011 B 1100 C 1101 D 1110 E 1111 F と覚えるしかないでしょう。

shushu77
質問者

お礼

やはり基本を覚えないと・・・ですね ありがとうございました

関連するQ&A