16進数と2進数

16進数と2進数

 デジタル回路は2進数で設計します。2進数は”0″と”1″で表すことができます。そして、桁(bit数)で無限の値を表記することができます。それでは、101(Dec)を2進数で表記すると1100101(Bin)になりますね(関数電卓で計算しました)。この1100101という数値の並び、0と1ばっかり多くて(2進数なのだから、当たり前です)、わかりにくくないですか? 大丈夫。ベテランエンジニアもわかりにくいと思っています。そして、よく値を記入ミスします。だって、最近のパソコンは64bitですよ。64桁なんて誰でも書いている途中でわからなくなります。

 このわかりにくさを解消するために、16進数というのがあります。なんで、10進数から2進数に変換したのに、さらに16進数になるんだ! と思うでしょうが、慣れてくると非常にわかりやすいのです。もちろん、10進数から直接16進数に変換しても良いのです。

 10進数は0〜9を使います。2進数は0〜1です。では、16進数は? 0〜Fを使います。数え方は次のようになります。

 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、10、11、12 ...

 また”10″がわかりにくいですね。16進数の”10”は10(Hex)と書いて「イチゼロヘキサ」と読みます。(「イチマルヘックス」という人もいます)

 それでは、10進数と2進数、16進数を並べてみます。

 16(Dec)のところをみてください。10000(Bin)で、10(Hex)です。BinとHexで似てませんか? Binの4桁がHexの1桁に相当しているのです。だから、Hexの値をみただけで、Binの桁数がわかる仕組みになっています。

※Bin=バイナリ Hex=ヘキサ Dec=デシマル と読むようにします

 それでは、BinをHexに変換してみます。Binを4桁ごとに区切って、4桁毎にHexに変換すればいいだけです。110010010100001(Bin)を変換してみましょう。

 E6A1(Hex)「イーロクエーイチヘキサ」になります。

 2進数と16進数の関係とbit数(2進数の桁数)を理解してください。電卓で変換できればOKです。工学部の電子工学を専攻した学生でもbit数の理解ができない人がいます。1bitのandとかorとか論理設計ができるのですが、8bitの信号処理になると途端にわからない。となります。bit数は2進数の桁数だという事がわかっていれば、1bitだろうが8bitだろうが論理設計は一緒です。

 誰でも1bitの回路設計はできるのです。andとかorとか表を見れば動作が理解できますから。8bitや16bitの設計ができないのは、その8ビットの塊が何なのかを理解できたいでいます。一旦10進数に直してみてください。8ビットなら0~255(dec)になります。つまり、0~255という数で何かを表現しているのです。これに周期が絡み合ってデジタル回路は動作しています。

 ここまで10進数での「正の整数」を扱ってきたのに気がついたでしょうか? 実は小数点も2進数で扱う事ができますし、負の数も扱う事ができます。でも、それはデジタル回路設計中級ぐらいになってからにしましょう。どうしても小数点や負の数を扱いたい時には、回路の入り口で数十倍にして正の整数に変換して演算するなどの方法があります。回路設計としてはその方が楽なので、市販のデジタル回路でも多くは正の整数で計算しています。