少しでも分かりやすく伝えたい進数変換
皆さんこんにちは!!
今回は進数変換について解説したいと思います!
進数変換とは
普段私たちが何気なく使っている進数として、10進数が用いられています。0,1,2,3,4,5,6,7,8,9と来て、その次は繰り上がりして10となりますね。
10進数をもっと簡単に言うならば、桁が一つ増えると値が10倍になり、桁が1つ減ると値が10分の1になる進数のことを言います。
この10進数は人間にとっては最も身近で分かりやすい進数ですが、コンピュータは「0」と「1」しか理解することができない、つまり2進数しか用いることができないため変換する必要があるのです。
それぞれの進数
今回は進数変換で多く用いられる2進数、10進数、16進数のそれぞれの変換について説明を行っていきます。
下の図を基にそれぞれの進数について説明していきます。
2進数は、「1」と「0」の2種類があり、桁が一つ増えると値が2倍になり、桁が1つ減ると値が2分の1になる進数のことを言います。
16進数は、「0~9」の10種類に加え、「A,B,C,D,E,F」の計16種類があり、桁が一つ増えると値が16倍になり、桁が1つ減ると値が16分の1になる進数のことを言います。
2進数から10進数の進数変換
例として今回は、
という値を10進数に変換していきます。
上記で説明した通り、2進数は桁が一つ増えると値が2倍になり、桁が1つ減ると値が2分の1になるという特徴があります。
この特徴を活かすと下のような対応表を作ることができます。
後は、2進数の欄が1になっている場所に対応する10進数の値を足すだけで求まります。
今回だと、
よって変換後の値は「174」になります。
2進数から16進数の進数変換
この値の変換も先ほどと同じ
を用いて説明していきます。
「それぞれの進数」に書いてある対応表を見ていただければ分かると思うのですが、16進数は2進数4桁で表すことができます。
よって最初の値を4つずつに分けあてはまる16進数に置き換えるだけで16進数への変換は行うことができます。
よって変換後の値は「AE」になります。
10進数から2進数の進数変換
今回は10進数の
という値を2進数に変換していきます。
2で割っていく方法もありますが個人的に分かりずらかったので効率こそ少し悪いですが今回は、2進数から10進数の逆の方法で変換していきます。
前述したとおり、2進数は桁が増えたり減ったりで値が倍になったり2分の1になったりします。
そこで50から2の累乗数を引いていくことで変換をしていきたいと思います。
50に一番近い2の累乗数は32です。なのでまず50から32を引きます。
最後に2に一番近い2の累乗数を引いていきます。ややこしい書き方になってしまいましたが、2に一番近い2の累乗数は2ですよね。なのでこれも減算を行い、引いた結果は0になるので、他の場所は1にはならず、空いてる場所は0が入ります。
これで10進数から2進数への変換は終了です。
変換後の値は「11 0010」になります。
10進数から16進数の進数変換
例として今回は10進数の、
という値を16進数に変換していきます。
変換のやり方は、
の順番で行っていくので、やり方は前述したやり方を組み合わせるだけです。
まず30という値を2進数に変換していきます。
「10進数から2進数の進数変換」と同様に行っていくと、
こうなりますね。変換した2進数を16進数に変換を行うと、
となります。
よって変換後の値は「1E」となります。
16進数から2進数の進数変換
例として今回は、
という16進数の値を2進数に変換していきます。
変換と言っても2進数から16進数の変換の逆を行えばよく、16進数の1桁を2進数4桁に変えるだけで変換は完了します。
このように変換できるので、
変換後の値は「1101 0100」となります。
16進数から10進数の進数変換
例として今回は、
という16進数の値を10進数に変換していきます。
変換のやり方は、
の順番で行っていくので、やり方は前述したやり方を組み合わせるだけです。
まず2Cという値を2進数に変換していきます。
変換の仕方は「16進数から2進数の進数変換」と同じなので省略しますが、
このように変換できますね。
次に10 1100を10進数に変換していきます。
変換のやり方は、「2進数から10進数の進数変換」と同様です。
変換すると、
となります。
よって変換後の値は「44」となります。
まとめ
一気に変換を行うのが少し難しく感じたら一度別の進数に置き換えをする。
これをすることでもしかしたら解ける問題も増えるかもしれません!
10進数から16進数に一気に変換を行う方法もありますが、最初に触れるなら2進数などを途中で介した方が分かりやすいのではと考え、今回は少し遠回りな変換方法を行いました!