10進数を16進数にする方法




 理系な話をしてみる。

 普段、自分達が使っている数字は10進数。
 ご存知、10個目の数字ごとに桁が上がる。
 2進数は1と0のみで表され、
  0→1→10→11→100→101
 という具合に数値が増えていく。
 16進数は16個目の数字ごとに桁が上がり、
  0→1→2→3→4→5→6→7→8→9→A→B→C→D→E→F→10→11
 という具合に数値が増えていく。
 16進数の11は10進数では17になる。

 コンピュータの世界では10進数より2進数や16進数が用いられている。
 この文字を表すのにも、コンピュータ内では2進数で情報がやり取りされているはずだ。

 HPを作っているなら知っている人は多いと思うが、通常、HTMLで利用する場合の色の指定は16進数で行い、RGB(赤、緑、青)の3原色が基本となっている。

 つまり、HPで色の表現をするためには、16進数での色の値を知っていなくてはいけないというわけ。
 世の中には便利なものがあって、この色は16進数ではこのような数値ですよ、と教えてくれるHPがある。
 それを使えば、HPを作る際にも好きな色を表現できるわけだ。

 もしこれを自力でやるには?

 Windowsには「ペイント」なるアプリケーションがある。
 画像を編集しようとすると出てくるやつだ。
 これでは色を10進数によるRGBの3原色の数値で表している。
 最大の数値は255。
 なぜかというと、16進数ではFF、2進数では11111111にあたる数値となり、色々と都合がいいのだ。
 この数値を計算すれば、好きな色を16進数で表現できる。

 他にも色々と手段はあるだろうが。

 色に精通している人で、10進数の表示を見なくてもRGBの配分によってどんな色となるかが大体でも分かっていれば、「ペイント」は使わなくても大丈夫だ。
 実際に、簡単な色だったら素人でもできて、
  R:255 G:0 B:0
 だったら純度100%の赤ということにある。
 これは16進数に直すと、
  R:FF G:0 B:0
 になる。

 10進数を16進数にするには、1回、2進数に直す。
 10進数を2進数にするには、値を2で割ることを繰り返し、割り切れなくなるまでやり、余りの数値を見る。
 例えば、10進数の 100 だとしたら、

  2)100
  2)50……0(余り)
  2)25……0
  2)12……1
  2)6……0
  2)3……0
   1……1

 これを1番下から見て、 1100100 これが2進数での 100 になる。
 2進数を16進数に直すには、以下の表を使う。

  \| 00 | 01 | 10 | 11
――――――――――――――――
 00 | 0  | 1  | 2  | 3
――――――――――――――――
 01 | 4  | 5  | 6  | 7
――――――――――――――――
 10 | 8  | 9  | A  | B
――――――――――――――――
 11 | C  | D  | E  | F

 2進数を4桁と見て、上位2ビットと下位2ビットに別ける。
 上の表では左が上位ビット、上が下位ビット。
 くだけた言い方をすると、左の数値が先に来る2桁、上の数値が後に来る2桁ということだ。

 先程の 1100100 はまず8桁にする。
  01100100
 これを4桁ずつに区切って、それぞれの値を計算する。
  0110 0100
 すると、 0110 は上の表に従って、 6 となる。
 同様に、 0100 は上の表に従って、 4 となる。
 以上から、10進数の 100 は16進数に直すと 64 となる。

 これを、括弧を使って、
  100(10)=64(16)=1100100(2)
 と表す。

 まぁ、非常にめんどくさい。
 が、デジタルばかりに頼らず、たまには自力で色の計算をしてHPを作ってもいいかもしれない……って、ホントか?

 そんな理系で勉強する話の一つでした。