10進法,2進法,16進法と24ビットカラー

RGBを16進数の数値で指定するために必要な知識

 プログラムやWebページのスタイルから24ビットカラー(RGBで指定するフルカラー)を指定するときの記述で,16進数での指定方法があります。16進法というルールで表された16進数がどのようなものか見てみましょう。

10進法と10進数

 ふだん私たちが使用する数は,0から9の10種類の数字を用いて表しています。そのルールのことを「10進法」とよび,10進法で表された数のことを「10進数」とよびます。

 0を基準にして1ずつ足していくと,表記は次のようになります。

0+1=1
1+1=2
2+1=3
3+1=4
4+1=5
5+1=6
6+1=7
7+1=8
8+1=9
9+1=? ← ここで1桁では数を表しきれなくなりました。

 1桁目の「1の位」で表せなくなったら「10の位」を使います。9 の次は 10 となります。
 99の次はまた桁が増えて100です。

2進法と2進数

 10進法で10種類の数字を用いたように,2進法は2種類の数字で数を表します。(0と1の二種類ということです)

 0を基準にして1ずつ足していくと,表記は次のようになります。

 0+1= 1
 1+1= ? ← もうここで1桁では数を表しきれません。2の位を使います。
 1+1=10 ・・・10進法では,2
10+1=11 ・・・10進法では,3
11+1=?? ← また桁がふえます。4の位を使って「100」となります。

 2進法ではどんどん桁が多くなって,人が見ると扱いにくいのですが,コンピュータは「オン/オフ」の2つの状態で表せる2進法で情報を処理しています。

16進法と16進数

 同様に16進法では16種類のもので1桁を記述します。数字の 0 ~ 9 とアルファベットの A ~ F の16種類を使います。

0+1= 1
1+1= 2
・・・
9+1= A ・・・10進法では,10
A+1= B ・・・10進法では,11
B+1= C ・・・10進法では,12
C+1= D ・・・10進法では,13
D+1= E ・・・10進法では,14
E+1= F ・・・10進法では,15
F+1=10 ← ここで桁が増える。

 プログラミング言語 Python では,16進数であることを示すとき数字に 0x (ゼロエックス) をつけます。10進法での 10 を 16進法では 0xA というように記述します。(大文字小文字はどちらでもよい。また0x0Aのように0を埋めて記述してもよい)

Pythonでの例

a = 10
b = 0xA

print(a+b)
print(0x10)
print( hex(255) )

実行結果

20
16
0xff

・hex(x) は整数xを受け取り0x付きの16進文字列を返すPythonの組み込み関数です。

 

ビットとバイト

 「ビット」という情報の量を表現する単位があります。
 1ビットは0,1の2通りの情報を表せます。(2の1乗通り)
 2ビットは00,01,10,11の4通りの情報を表せます。(2の2乗通り)
 8ビットは2の8乗通り( 256 )の情報を表せます。

 8ビットを1まとまりにしたものを「1バイト」とよびます。1バイトあれば 0~255の数を表せることになります。
 記事冒頭の24ビットカラーは,2の24乗の約1678万色を表現できる仕組みです。

RGBの組み合わせ

 この記事を表示している画面(ディスプレイ)はデジタル画像のデータを赤(R)・緑(G)・青(B)の光に変えることで色を表現しています。(※1)
 この3つの強弱を数値で表すのがRGBカラーで,アプリケーションによっては10進数で(255,255,123)のように表現することもあります。

 Pyxelを含むいくつかのPythonライブラリでは,色指定に16進数の数値を使用でき,プログラムを作成する人にとって扱いやすい面があります。
 RGBがそれぞれ1バイト(0~255 → 0x00~0xFF)なので,0x000000~0xFFFFFF の2桁ずつR・G・Bの値になります。
 赤 0xFF0000
 緑 0x008000  lime 0x00FF00
 青 0x0000FF
 紫 0x800080  fuchsia 0xFF00FF
 黒 0x000000
 白 0xFFFFFF


 (※1 ディスプレイの設定により色の表示は異なります)

ツール類

 RGBカラーコード等でWebを検索すれば,たくさんの参考サイトが見つかると思います。

 Webページを作成するHTML+CSSの情報ページですが,下記サイトなどで16進数の値を調べられます。 
 色選択ツール - CSS: カスケーディングスタイルシート | MDN
 
 CSSでは#をつけて16進数であることを示しています。Pyxelのパレットファイルでは#不要)


 下記のページではWebで使用される色の名称などを見ることができます。 
 <color> - CSS: カスケーディングスタイルシート | MDN

関連記事

kinutani.hateblo.jp