この記事ではエクセルにて2進数から16進数に変換する方法、また16進数から2進数に変換する方法について解説していきます。
これらの処理では
・BIN2HEX
・HEX2BIN
を使うといいです。
ここで使う、BINは2進数、HEXは16進数を意味します。ちなみに10進数はDECです。
それでは実際の例を用いてみていきましょう。
エクセルにて2進数から16進数を変換する方法【bin2hex:10桁以上も】
エクセルにて2進数から16進数に変換(2進法と16進法の換算)を行うには、BIN2HEX関数を使うといいです。
BIN2HEX関数とは題意の通り2進法での表記と16進法に変えることができる関数であり
=BIN2HEX(2進数,桁数)
と入力します。桁数は指定する必要が無ければ省略可です。
具体的には=BIN2HEX(D4)などと入力するだけでOKです(ここでD列に2進数での表記がされているとします)。
後はオートフィル機能にてデータをコピーすれば、2進数を16進数に一括変換させることができます。
10桁以上の場合に2進数から16進数を変換する方法【bin2hex】
ところが2進数が10桁を超えてしまうと上のように16進数の表示がおかしくなってしまいます。
これは関数の仕様の問題にて、指定できる桁数が10文字までと決まっているからです。この時、16進数では下2桁分までは正しく表示(これに正確に対応する2進数は8桁分)できることになります。
10桁を超える2進数を16進数に変換するには、
・16進数下2桁に対応する2進数下8桁分とそれ以外に分解する
・分解した2進数の各々をBIN2HEX関数で16進数に変換し、最後に合体させる
といいです。
具体的には、以下のよう=BIN2HEX(INT(数値/10^8))と下8桁=BIN2HEX(MOD(数値,10^8),2)を&でつなげた数式を入力するといいです。
上の数式の詳細を確認していきます。
2進数を分解するにはINT関数とMOD関数を使いましょう。
INT関数とは入力した数値または計算結果の整数のみを取り出す関数で
INT(数値または計算式)
と入力します。
MOD関数は数値を除数で割った時の余りを取り出す。つまり小数のみを取り出す関数で
MOD(数値,除数)
と入力します。
16進数の下2桁は2進数では8桁なので、除数は10^8となります。
なので上の桁=BIN2HEX(INT(数値/10^8))と下8桁=BIN2HEX(MOD(数値,10^8),2)を「&」でつなげるわけです。
このように前の表では2進数9桁、10進数では511を超えると表示がおかしくなっていた16進数が正常に表示されるようにまりました。
(念のため検算で16進数を10進数にHEX2DECを用いて変換してみました。
このように検算結果が左の10進数と合っていることがわかります。)
<div class=”concept-box5″><p>
2進数とは1と0で構成される数で、2になると桁が繰り上がります。
16進数は16で桁が繰り上がりますが、10進数で使う数字では10~15が表現できません。そのため10=A、11=BというようにA~Fまでのアルファベットを用いて表現します。
10進数と対比させるとこの表のようになります。
10進数はDEC、2進数はBIN、16進数はHEXと表現され、それぞれを変換するときは〇〇〇2〇〇〇という方法を用います。〇〇〇にはDEC、BIN、HEXが入ります。
</p></div>
エクセルにて16進数から2進数を変換する方法【hex2bin:10桁以上も】
16進数から2進数に変換するときは、HEX2BIN関数を使います。
使用方法はシンプルであり、
=HEX2BIN(16進数の数値)
と入れるだけでOKです。
この場合でも2進数が9桁までしか表示できず、それを超える10桁以上は異常表示になってしまいます。
2進数から16進数に変換するときは16進数の上2桁、下2桁で分けましたので同様に考えてみます。
ここで2進数は10進数に置換えて考えることができたので計算式で桁の操作ができましたが、16進数になるとA~Fの記号が入ってしまうため計算ができません。
記号が入っていて計算ができないときは16進数を「文字列」として、LEFTとRIGHTを用いるといいです。
まず16進数を上2桁、下2桁に分けるために「4桁」の文字列にする必要があります。
これは
=RIGHT(“0000″&〈セル〉)
と入力してみると
16進数の前に”0000”を付けて、右から4文字を抽出したので4桁の文字列が得られました。
これで上2桁はLEFT(E4,2)で抽出することができます。
4桁をイメージしやすいように、ここでは「D列」を作りましたが、実際は「E4」のところにRIGHT(“0000″&D4,4)を直接書き込みます。
上2桁は
=HEX2BIN(LEFT(RIGHT(“0000″&D4,4),2),8)
下2桁は
=HEX2BIN(RIGHT(D4,2),8)
この式を「&」で連結して入力します。
上の表ではエラーになっていた10進数の512以降も正しく表示されるようになりました。
これで完結でも良いのですが、16桁全て表示していて見難いときはVALUE関数で数値化すると見やすくなっていいです。
まとめ エクセルにて2進数と16進数を変換する方法
この記事ではエクセルで2進数と16進数を変換する方法として、2進数から16進数、16進数から2進数にする方法について解説しました。
エクセルの仕様で2進数が9桁までしか表示されないので、10桁以上を扱うにはひと手間かけなければなりませんが、ここで説明した方法で16桁まで扱うことができます。
エクセルのさまざまな処理を理解し、業務に役立てていきましょう。