2進数と10進数 それぞれの意味と変換方法

2進数と10進数はプログラムを触っていると頻繁に目にするものですが、実際にどんなものかよくわからないといった人や、わかってたけど忘れてしまったという人は多いのではないでしょうか。私は後者です。

そのため、わからない人や忘れてしまった人のために図を用いて覚えやすいように解説していきたいと思います。ほとんど自分のためです。ありがとうございます。

2進数とは

まずは2進数とはというところから説明します。2進数とはバイナリデータとも呼ばれますが、「0」と「1」の2種類の数値によって表せる表現方法の事です。

よくマトリクスとかで出てくる0と1の数値の羅列は2進数のデータが流れているとそういうわけです。コンピューターでは2進数でデータを扱っているのでこういった表現がよく使われます。

10進数とは

10進数とは0~9の10個の数字で表される表現方法の事です。要は我々が日常で扱ってる数値が10進数です。英語でデシマルといいます。VBとかで数値を定義するときにDecimalと指定しますがあれです。2進数はコンピューターが扱うデータ型ですが、人間が理解するのには時間がかかるので普段使い慣れている10進数に変換したいという話がよく出ます。主に資格試験でですが。プログラム上では関数が勝手に変えてくれるので使う機会はないかもしれませんが、話を理解するのに頭の中で変換が必要だったりするので覚えておいて損はないでしょう。

進数とは

それでは2進数や10進数の進数って何?というところですが文字列を見れば”進む数”です。2進数であれば2で進む数、10進数であれば10で進む数です。では何が進むのかというと数値の桁数が進みます。2進数であれば2になると桁数が進みますし、10進数では数値が10になると桁数が進みます。文字で書いてもピンと来ない人も多いでしょうけど、10進数であれば0から「0,1,2,3,…」と数えて10になると1桁の位が0になって2桁目が0から1になりますよね?これが桁数が進んでいるということです。

では2進数だとどうなるかというと0から数えて「0,1」と数えると次は2にならずに「10」になります。これでイメージが湧いたでしょうか。

さらにこの桁に入る数の種類数の事を基数といいます。2進数であれば「0,1」なので2。10進数であれば「0~9」なので10。〇進数の〇に入る値はこの基数の値を入れているというわけです。

進数の計算方法

では次に進数の計算方法についてです。まずは位の意味について考えます。我々が普段扱っている数字は1~9であれば、1の位。10~99であれば10の位。100~999であれば100の位といいますよね。何となく使っていますが、これを説明しようとするとそうだからとしか言えない人が多い気がします。ちこちゃんに怒られるやつですね。数学で習ったような記憶もありますが、私は覚えていません。

10進数で考えるとピンときやすいのでまずは10進数で考えます。10進数の1の位の意味は「10の0乗」です。0乗は何の数字でも1になるのでつまり1の位ということです。10の位は「10の1乗」、つまり10です。ここまでくればわかると思いますが、100の位は「10の2乗」です。

だから何って感じかもしれませんが、例を持って考えてみます。例えば「4649」って数字があったとします。これは分解すると以下のようになります。

つまり、それぞれの桁の値と位自体の指数値をかけてあげてそれぞれ加算すると「4649」という値になるということです。当たり前の事ですが、一つ一つ考えるとそういうことです。普段使っている当たり前の表現方法なのでいちいち分解せずに数字を見ただけでそれがどんな値なのかわかるわけですが(というか10進数がそういう風になっています)、2進数や他の進数の場合、パッと見ただけで何なのかわからないので一つ一つ分解して計算してあげる必要があります

では本題の2進数ですが、「10011」という数字があった時これは何の値か考えてみます。まずは桁を指数倍する値ですが、10の指数倍するわけではありません。基数の指数倍します。つまり2進数は2の指数倍になります。

2進数の最初の位は「2^0」の1の位。次は「2^1」の2の位。次は「2^2」の4の位。次は…となります。ここに先ほどの数値「10011」をあてがいます。よって求める値は、

「19」となります。2進数の計算を行いたいのであれば、その桁がなんの位か暗記もしくはパッと計算できると変換しやすいと思います。

2進数への変換

最後に10進数の2進数への変換方法についてです。あれ?2進数から10進数の変換方法は?と思うかもしれませんがすでに上でやりました、それぞれの桁の位に2進数の値をかけてあげる方法がそれです。「10011」であれば「19」、「1010」であれば「10」…となります。

最後にその逆をやりたいのですが、どうすればよいでしょうか。先ほどはその桁の値を位ごとにかけてあげてると10進数の値になりました。掛け算した値を戻したいときって普通であれば割り算すれば元の値に戻りますよね?この場合も同じように2の値で掛け算したので2で割ってあげれば10進数を2進数に戻すことができます

それでは具体的に見てみましょう。使う値は先ほど変換した「19」。これを「10011」に戻してあげればよいのです。やり方は10進数の数値の商が「1」になるまで「2」で割り算していき、「商の値」と「余りの数 」を並べることで10進数の値を2進数の値へ変換することができます

最後の商、「1」が最上位の位になります。なので、2進数では一番上の数値は絶対1です。(3桁の2進数で書式を4桁にするといった話の場合は別ですが)その後下から順に余りの数を後ろに書いていけば、「10011」。19の2進数が求まりましたね。

なぜ下が上の位で上に行くほど下の位になるかというと左の商に使った2の数に注目してください。19の場合、一番下の商「1」になるまで2が4つ出てきていますよね?なので「19を2で4回割った」、つまり「2^4」ということになります。上に行くほど商に使用した2の数が減っていくので下の位になっていきます

以上で、2進数と10進数の解説は終了です。

いかがでしょうか。自分なりにかなりわかりやすく書いたつもりでしたが、ようわからんかったという方はコメント等でご連絡いただけるとお答えし、記事に反映させる予定なので是非是非。

今回は以上です。お疲れ様でした。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

本業ではPHPを使ったWEBアプリやJavaを使用した基幹アプリを作成しております。Pythonは個人的に勉強しており、E資格を取ったりしたおかげで、業務でAIの研究とかも任されるようになりました。学習のアウトプットのために本サイトを運営しておりますが、これからPythonを学ぶという人のお役に立てればいいなと思います。わからないことや調査して記事にしてほしいことがございましたらご連絡いただけると幸いです。

コメント

コメントする

目次
閉じる