- ベストアンサー
2進数、16進数、10進数のことをわかりやすく教えてください。
この進数のことをわかりやすく教えてください。まったく理解が出来ないので。 よろしくお願いします
- みんなの回答 (15)
- 専門家の回答
質問者が選んだベストアンサー
n進数のことを理解するには、 (1)各位を構成する数字 (2)桁上がりの仕組み のことを理解する必要があります。 (1)については、n進数の1の位の数は0を含めて、n個あるということです。 ですから、10進数では1の位を表す数字は、 0,1,2,3,4,5,6,7,8,9の10個存在します。 8進数では、 0,1,2,3,4,5,6,7の8個 2進数では、 0,1の2個 16進数では 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fの15個 (9より大きな数字がないため、アルファベットで代用しているのです。) つづいて、(2)の桁上がりの仕組みですが、 例えば10進数では、各位の数字を表すのに、9より大きな数字はありませんので、桁上がりが生じます。 それでは、そもそも桁とは何なのでしょうか? 各位の桁は、(10進数を例にとると) 各位に掛けられる10の数を表しているのです。 すなわち、 1の位では10を0個(=10^0)掛ける(すなわち掛け算しない) 10の位では10(=10^1)を掛ける 100の位では10×10(=10^2)を掛ける 1000の位では10×10×10(=10^3)を掛ける 10000の位では10×10×10×10を1個(=10^4)掛ける というように桁が1つ上がるごとに10が掛け合わされていきます。 ですから、10進数で3472という数は、 10×0の位が2 -> 2 10の位が7 -> 10*7 10×10の位が4 -> 10*10*4 10×10×10の位が3 -> 10*10*10*3 となるので、 10*10*10*3+10*10*4+10*7+2=3000+400+70+2=3472 n進数の場合もこのルールを適用します。 8進数で3472という数をなじみの深い10進数で表してみると 8×0の位が2 -> 2 8の位が7 -> 8*7 8×8の位が4 -> 8*8*4 8×8×8の位が3 -> 8*8*8*3 となるので、 8*8*8*3+8*8*4+8*7+2=1536+256+56+2=1850 同様に2進数で10100011 という数字を10進数で表してみると 2×0の位が1 -> 1 2の位が1 2*1 -> 2 2×2×2×2×2の位が1 2*2*2*2*2*1 -> 32 2×2×2×2×2×2×2の位が1 2*2*2*2*2*2*2*1 -> 128 となるので、 126+32+2+1=161 余談ですが、2進数を使用すると 10進数で161という数字を表すのに8桁も使用してしまいます。 どうして、このような桁数の多くてわかりにくい2進数を使用しているかというと、 2進数では0と1という数字しかありませんが、これが、 コンピュータで使用する電気信号の有・無の状態に似ているので使用されるのです。 キーボードから10進数で入力された数字は、 一度2進数に変換(エンコード)され コンピュータの内部で2進数で演算され、 画面に表示するときに、元の10進数に変換(デコード)されます。 ところで、16進数についてですが、 16という数字は2×2×2×2のことなので2進数の親戚ともいえます。 これは、偶然なのでしょうか? 実は、2進数は桁数が非常に大きくなり人間に対しては判りにくいので、 2進数を4桁ごとに区切ったものを1桁に置き換えたものなのです。
その他の回答 (14)
んー、気になったので私も書きます☆ 2進法 01 10進法 0123456789 16進法 0123456789abcdef 上記は、数字を並べたものです。 分からないというのが 16進法だと思われます。 9の次がaになるのは・・・・・そういう決まりと覚えてください。 10進法では、 1の次はなぜ2なのですか? 2の次はなぜ3なのですか? (この問いには、決まりだからとしか私は知りません!w) あと 10進数では16なのに 16進数では10とはなぜか? これは、16進数の数字を10進数で言うと16というだけで、 16進数で数えた数字ですから10で良いのです。 0123456789(10進数) 012346789abcdef(16進数) 10進数では、9まで来ると10になるわけです。同様に 16進数では、fまでくると10になるわけです。 この辺りの法則と言うのは、むか~しの人が決めました ということしかわかりません!!
- kapiyoko
- ベストアンサー率15% (13/83)
以前回答したものが参考になるかと思います。ご覧ください。 2進法では01の二つの数字、 5進法では01234の5つの数字、 10進法では0123456789の10個の数字、 16進法では0123456789ABCDEFの16の数字+文字を使います。 それぞれの位が10進法なら1の位、10の位、10の2乗の位、10の3乗の位・・・となっていくのをほかにも応用して考えてみてください。
- ShirokumaX
- ベストアンサー率31% (290/932)
#5です。 今改めて読んでいくと間違いだらけ…2度目になりますが訂正させてください。 冒頭の >10進数は普段お使いの数字なのでわかると思いますが、1の位が一番左にありまして を >10進数は普段お使いの数字なのでわかると思いますが、1の位が一番右にありまして に訂正します。 また >16進数は16倍で上がっていきます。つまり、1の位、16の位、32の位、…です。 を >16進数は16倍で上がっていきます。つまり、1の位、16の位、256の位、…です。 に訂正します。 たぶんもうないと思うのですが…。 16進でFのあとが10になることが感覚的にわからないで困っておられるようですが、この「10」は、我々が普段使う10進数の「10」(じゅう)とは姿かたちはそっくりですが、全くの別人であると考えてください。 16進の「10」は、通常「いちぜろ」と読まれまして、16の桁に1つある(=10進で言うと「16」)あり、さらにそれに加えるべき1の桁には何もない(ゼロ)という意味なのです。 もしどうしてもわからなければ、10進数のいろんな数字をとことんまで眺めて、たとえば153877(でたらめな数字ですが)がなぜ「じゅうごまんさんぜんはっぴゃくななじゅうなな」をあらわしているといえるのか考えてみると桁上がりのシステムがわかるかもしれません。
#11です。間違えました。 誤: 私たちが使っている0~99までの数字は十進法の元で考え出されたの物なので、 正: 私たちが使っている0~9までの数字は十進法の元で考え出されたの物なので、
> なぜ10からA~になるのでしょうか? 私たちが使っている0~99までの数字は十進法の元で考え出されたの物なので、 9を越える数値を一文字で表す文字が存在しません。 しかし十六進法を表記するには、1桁に16個の数字が必要になります。 つまり、十進法の10~15までを一文字で表記するために、これに当たる数字を考えなくてはなりません。 そこで、アルファベットのA~Fを10~15に割り振って表すように「決め」たのです。 もしかしたらV~Zまでのアルファベットになっていたかもしれません。 > なぜ16が10になるのでしょうか。 上で言っている10は十進法の10ではなく、十六進法の10と言う意味です。
- mizuneko
- ベストアンサー率16% (3/18)
ホームページのカウンタを イメージしてみる 今 6777 だとすると次は 6778 ですね だとすると次は 6779 ですね けれど、その次は 6780 ですね なぜかと言うと10進数だから カウンタの『輪』は数字10個が 0 9 1 8 2 7 3 6 4 5 のようになっているから、 9の次は0 で右が一回転して0になったとき その隣が一回転するので 7の次は8 結局 7780 になる もし8進数なら カウンタの『輪』は数字8個が 0 7 1 6 2 5 3 4 だから 今 6777 ならばその次は 7000 になる なぜなら 7の次は0 7の次は0 7の次は0 6の次は7 と順に桁が上がるから つまり、数が数であるのに必要なのは 『1を足せる』ことであり 『桁上がりのシステム』であって 数字の数が10個であるのは、 たぶん人間の指の本数のせいで そうなっているだけ。 ちなみに上の7000は7千じゃない 0から、8回目で 10 64回目で 100 (8×8×8×7)回カウンタが進めば 7000 0から 8進数のカウンタと 10進数のカウンタを同時に押していくと 8進数のカウンタが、7000の時 10進数のカウンタは、3584 ということに気づけば、ですね。 ちなみに16進数でA-Fを使うのは たぶん欧米人が適当にそうしただけです。
- borkumriff
- ベストアンサー率13% (6/46)
10進数というのは、数字を10個使って数えるという意味です。使う数字は小さい順に0,1,2,3,…,8,9の10個です。 ふだん何気なく使っている10進数ですが、数え方をルールとして書いてみると次のようになります(0からスタートして1ずつ足していく(進んでいく)ときのことを考えてください)。 1)使う数字は、0,1,2,3,…,8,9の10個 2)1つ数字を足すごとに一つ大きい数字になります。 例:4に1を足すと5。 3)一番大きい数字9までいったら、次は0に戻り、同時に一つ上の位の数字を一つ増やします。 例:19の次は、一の位は9の次で0、十の位の1が一つ増えて2になり、20になる。 この三つが10進数のルールになります。 このルールが、ほかの進数にも応用されています。 たとえば、6進数というのを考えるときは、上のルールの中の'10'のところを'6'に読み替える、という応用の仕方になります。 <6進法> 1)使う数字は、0,1,2,3,4,5の6個 2)1つ数字を足すごとに一つ大きい数字になります。 例:4に1を足すと5。 3)一番大きい数字5までいったら、次は0に戻り、同時に一つ上の位の数字を一つ増やします。 例:15の次は、一の位は5の次で0、十の位の1が一つ増えて2になり、20になる。ただしここで重要なのは、6進法での'20'は'にじゅう'とはよみません、'に れい'と読むことになります。なぜなら'にじゅう'というのは10進法の読み方だからです。 ほかの進法も、同様に応用させて数えます。 身の回りで見かける10進法以外の数え方の例としては、時間や年月などがあります。 時間は、分は60進法、時間は12進法、または24進法、月は12進法となっています。分は60までいったら0に戻し、一つ上の位の時間を1つ上げる、そういうルールです。ただし、少しややこしいのは、60まで数えるのに10進法を使っているところですね。本来なら60個の数字を用意しないといけないんだけど、それは覚えるのも大変なので9個の数字で代わりをさせることにした、そういう考え方です。 数字ではない字を使っている他の例は、例えば、曜日や干支があります。土曜日までいったら日曜日に戻る、亥までいったら子に戻る。ただしここで少し違うのは、戻っても上の桁は上がらないことですね。正確には7進法とか、12進法とは言わないのかもしれませんが。。 話は戻って、2進法も上のルールで数えます。 使える数字が0と1だけになるので桁上がりが非常に忙しくなります。 試してみてください。 ちなみに、0と1しか使わなくてすむので、これをスイッチのオン・オフに割り当ててコンピュータができたというわけです。
おっと、あなたの周りにも同じようなものがありますよ。 例えば時間。 秒が分になるためには60必要です。 分が時になるためには60必要です。 時が日になるためには24必要です。 この秒->分->時->日というのを1の位->10の位->100の位という位が上がることと同じだと考えて下さい。 (念のため1->10->100というのは10数進です) まず2進数は一つの位が0と1だけで、2を表現するためには位を上げる必要があります。 ですので2進数で2を表すと10となります。 このようなルールなので10進数では一つ位が上がると10倍になりますが、2進数では2倍になります。 次は16進数。 これは位を上げるために16必要です。 0123456789と来て、10を表すのにAとし、以降BCDEFと続きます。 先ほどと同じように一つくらいが上がると16倍です。 さて、なぜ時間と違ってABCなどを使うのでしょう。 それは時間の場合、時分秒を何らかの方法で区切って表示しますが、16進数(他のものでも)、そのような区切り文字は使いません。 (時間だと10時16分とか10:15とか) そのため、もし112と表すと1と12なのか12と1なのか分からなくなるからです。 応用になりますが、2進数は位が上がると2倍で16進数は16倍でした。 16倍というのは2*2*2*2なので、2真数の表現を16進数の表現に変換するのはとても簡単です。同じように4進数や8進数への変換も簡単です。
- ShirokumaX
- ベストアンサー率31% (290/932)
#5です。1箇所訂正を 「つまり、10進数では、1の位が一番下にあって(少数は考えから省きましょう)、右へ向かって10の位、100の位…」… を 「つまり、10進数では、1の位が一番下にあって(少数は考えから省きましょう)、左へ向かって10の位、100の位…」… と読み替えてください。
- ShirokumaX
- ベストアンサー率31% (290/932)
10進数は普段お使いの数字なのでわかると思いますが、1の位が一番左にありまして、その桁には9まで入れることができ、そこにもうひとつ入れようと思ったら、位がひとつ上がって10の位に1を入れ、1の位は何もなくなりますので0になる、その後どんどん数を増やして、10の位に9個あって90個、さらに1の位にも9個あって合計99個、なって10の位と1の位ではもうこれ以上表せない、となったらさらに位が上がって100の位に1個入って…という風に、数字が10倍になるたびに位がひとつづつ上がっていきますね。 2進数の場合、これが「2倍になるたびに位がひとつ上がる」ということになるわけです。1の位にひとつ入れる。もうひとつ入れることはできないので位をひとつ上げて2の位にひとつ入れ、1の位は0にする。そこにさらにひとつ入れると11になります。さらにもうひとつ入れようとすると、1の位はいっぱいなので0を入れます。位がひとつ上がって2の位にひとつ入りますが、2の位ももういっぱいなので、隣の4の位にひとつ入れ、2の位と1の位はともに0、つまり“100”になります。 つまり、10進数では、1の位が一番下にあって(少数は考えから省きましょう)、右へ向かって10の位、100の位…と、数字が10倍になるたびに桁がひとつ増えていきます。10倍になるたびに桁がひとつ進んでいくので10進数です。 同様に2進数では、1の位が一番下にあって、数字が2倍になるたびに、2の位、4の位…と桁が上がっていきます。2倍になるたびに桁がひとつ進んでいくので2進数ですね。 2進数を表す数字が1と0であることにはあまりこだわらない方がいいかもです。なんだったら○と×でもいいのです。つまり、その桁にひとつあるかないかだけ表せればいいわけですから(2進数では、その桁にふたつある、ということを表すことはできないことに注意してください)。 このように2進数とは、あるか、ないか、ということだけを表す数字の表記方法なので、電気が流れているか、流れていないか、ということがすべてのデジタルの世界にはまことに相性がいいのです。 ところが、2進数を人間に見せようとすると、私は100010歳です、ということになってしまい、非常にわかりにくくなります。 なので、いくらか人間に読みやすくしつつ、2進数の「コンピュータとなじみがいい」という利点を残すために16進数というものがあると考えていただければいいと思います。 もう詳しくは言いませんが、16進数も考え方は同じで、ただ10進数であれば10倍、2進数であれば2倍で位が上がっていくのに対し、16進数は16倍で上がっていきます。つまり、1の位、16の位、32の位、…です。 なぜ16かと言うと、2進数4桁で表せるのが0~15で、16になると5桁目に入る、という具合になりますので、2進数を4桁づつに区切るとちょうど16で収まりがいいからです。 10進数で言うところの10~15を表す数字がa~fのアルファベットであることにも特に意味はありません。ただふさわしい数字がなかったのでアルファベットで代用されただけで、「あいうえおか」というひらがなでも良かったわけですが、まあ日本しか使わないひらがなよりはアルファベットで表した方が世界の人々が楽でしょう。 あとはいくつかの数字を変換して感覚をつかむのが一番楽だと思います。10進数の数字をいくつか、2進数、16進数に変換してみてください。この順番(10進数→2進数→16進数)が楽だと思います。答え合わせは、ウィンドウズをお使いでしたら、プログラム→アクセサリ→電卓を使うとできます。「表示」メニューから「関数電卓」を選びます。左上のラジオボタンに最初「10進」にチェックが入っていると思いますので、任意の数字を入れ、ラジオボタンを切り替えると自動的に変換してくれます(8進、というラジオボタンもありますが、これはあまり使わないので忘れていいと思います)。
- 1
- 2
お礼
とても遅くなりましたが 回答ありがとうございました! あなたの回答でやっと理解しました・・・