1. #FF0000の 6つの もじは、なにを して いるの?
1. 色を表す6文字は、2文字ずつ区切って読む
1. #rrggbbの構造 ── 6桁を2桁ずつ、赤・緑・青に割りあてる
ウェブの ページの いろは、「#」の あとに 6つの もじを ならべて きめます[4]。
この 6つは、2つずつ 3ぐみに わけて よみます。はじめの 2つが 赤、つぎの 2つが 緑、さいごの 2つが 青の つよさです[4]。
「#FF0000」は、赤が FF、緑が 00、青が 00。赤だけが いちばん つよい ので、あかい いろに なります。
では、「FF」って いくつの ことなのでしょう。そこから はじめます。
2. 0〜255は、なぜ 256この?
2. 0〜255は、8ビットの256通りだった
2. 1バイト=8ビット=256通り ── 255という上限の由来
コンピュータの 中では、でんきが ついて いるか、きえて いるかで、1か 0を あらわします[1]。この 1つぶんを「ビット」と いいます。
ビットが 8こ あつまると、ならべ方は 2を 8かい かけた 256とおりに なります[2]。数に すると、0から 255までです。
だから、赤の つよさの わけ方も 256だんかい。いちばん つよいのが 255です。
ちなみに「ビット」は、ふたつの 数字を いみする えいごを みじかく した ことばです[6]。
0か1かを、ひとつぶんにしたのがビット
コンピュータの部品のトランジスターは、オンかオフのどちらかの状態をとります。オンを1、オフを0とみなして、この0か1の1つぶんを「ビット」と呼びます[1]。
2つの状態にそろえるのは、電圧が高いか低いかのような区別なら、技術的に作りやすく、安定して保てるからだと説明されています[7]。ノイズに強い点も理由にあげられます[8]。
8ビットなら、ちょうど256通り
1ビットは2通り、2ビットなら4通り、と、ビットが1つ増えるごとに通り数は2倍になります。8ビットでは2を8回かけた256通りで、0から255までの数が区別できます[2]。色の強さが0〜255なのは、1色に8ビットを割りあてているためで、255はその最大値です[4]。
「ビット」という名前の出どころ
ビットは、2進数の桁を意味する英語(binary digit)を縮めた言葉です。1947年のベル研究所のメモで、ジョン・テューキーが短くしたと伝えられ、翌1948年のシャノンの論文で初めて印刷されたとされます[6]。
トランジスターはオンとオフのどちらかをとり、オンを1、オフを0とみなす。この0か1の情報量が1ビットだ[1]。2値を使う理由として、電圧の高低のような2状態は技術的に容易かつ安定して実現できること[7]、論理ゲートを使う電子回路での実装が単純でノイズに強いこと[8]があげられる。ただし3値以上の方式が原理的に不可能という話ではなく、資料が述べているのは実装上の利点である。
ビットが1つ増えるごとに通り数は2倍になるので、8ビットは2⁸=256通りで、0〜255の整数を表せる[2]。CSSの色の1成分が0〜255なのは、この8ビット(1バイト)に収まる範囲だからと読める。3成分なら256³=16,777,216通りになるが、これは筆者の計算で、資料が示した数字ではない。
「ビット」の語は binary digit の縮約で、1947年1月9日のベル研究所のメモでテューキーが短縮し、1948年のシャノンの論文『通信の数学的理論』で初めて印刷された、と解説されている[6]。出典は百科事典の記述で、メモの原文は読んでいないため、日付は「とされる」の範囲で扱う。
3. 4つで 1つに まとめると どうなる?
3. 2進数を4桁ずつに区切ると、16進数1桁になる
3. 4ビット=16進数1桁 ── 11111111がFFになる計算
8ビットを そのまま かくと、「11111111」。ながくて、まちがえそうです。
そこで、4つずつ に わけます。「1111」と「1111」。4つの 0と1の ならべ方は 16とおりなので、1つの もじで あらわせます[3]。
16とおりを かぞえる には、0から 9までの 10この 数字では たりません。そこで 10の かわりに A、11は B……と つづけて、15は Fです[2]。
「1111」は 15なので、F。だから「11111111」は「FF」。じゅうろくしんすうの 2けたで、8ビットが かけました。
長い0と1の列は、読みにくい
8ビットの最大値を2進数で書くと11111111です。数が大きくなると、ここに32桁、64桁と続き、数えまちがえずに読むのは大変です。
そこで使われるのが16進数です。16進数は、2進数の4ビットをまとめて1桁にしたものです[3]。
16通りの記号が要る
4桁の2進数は0000から1111までの16通りです。これを1文字で書くには16種類の記号が必要ですが、数字は0〜9の10個しかありません。そこで10以降はアルファベットを借りて、A=10、B=11、C=12、D=13、E=14、F=15と、6つの文字を数として使います[2]。
11111111がFFになる
11111111を4桁ずつ区切ると、1111と1111です。どちらも15なのでF。つまりFFです。10進数のFFは、15×16+15=255で、8ビットの最大値と同じになります[2]。256に当たる16進数は100です[2]。8ビットが、16進数の2桁ぴったりに収まるのが便利な点です。
11111111のような長い2進数は、人間が読みまちがえやすい。そこで4ビットを1つの記号にまとめる。2進数4桁は0000〜1111の16通りなので、16進数1桁に対応する[3]。8・16・32ビットの値も、16進数なら2桁・4桁・8桁で簡潔に書ける[3]。
16進数は0〜9とA〜F(A=10、…、F=15)の16文字を使う[2]。10進数への換算は、桁ごとに16の累乗をかける。たとえば[3AF]は3×16²+10×16+15=3×256+160+15=943である[2]。FFなら15×16+15=255、256は16進数で100と書く[2]。
2進数→16進数は、右から4桁ずつ区切って置きかえるだけで済む。除算も乗算もいらないのは、16が2の4乗だからだ。10進数と2進数ではこうはいかない。10は2の累乗ではなく、区切りがきれいに合わないためである。この「区切って置きかえる」手順が、16進数が実用で使われる主な理由のひとつだと読める。
4. 色の 6もじを じぶんで よんで みよう
4. 6文字を2文字ずつ読めば、色が予想できる
4. 色コードを手計算で読む ── 0〜255の割合と、3桁表記の注意
では、「#FF0000」を よんで みましょう。
「FF」は 255、いちばん つよい。「00」は 0、ゼロです。赤が 255、緑が 0、青が 0なので、赤だけが ひかります。
「#FFFFFF」は、3つとも 255。ぜんぶ いちばん つよいので、白に なります[4]。
みじかい「#FFF」も 白です。これは、「FFFFFF」の ことで、0を たす のでは なく、おなじ もじを 2かい かさねます[4]。
#ff0000を読んでみます。前の2文字ffは255で赤が最大、次の00と00は緑も青も0です。赤だけが光るので、赤になります。#ffffffは、3つとも255なので白です[4]。
255は100%にあたると、W3Cの仕様にも書かれています[4]。たとえば16進数の80は、8×16+0=128です。128÷255は約0.5なので、数値としては最大値の約半分です(光の強さがちょうど半分になるという意味ではありません)。#808080は、3つとも最大値の約半分なので、黒と白の中間のような色だと予想できます。
短く書く方法もあります。#fffのように3桁で書くと、各桁を重ねた#ffffffとして扱われます。#fb0なら#ffbb00です。0を足して#f0b000にするのではない点に注意が要ります[4]。
手順は、(1) #のあとの6桁を2桁ずつに区切る、(2) それぞれを10進数に直す、(3) 255に対する割合で強さを知る、の3段階になる。#ff0000なら(ff, 00, 00)=(255, 0, 0)で、赤だけが100%、緑と青が0%だ。#ffffffは(255, 255, 255)=すべて100%で白になる[4]。
中間の値も同じ要領で読める。80は8×16=128で、128÷255=0.502…、つまり数値は最大値の約50%だ(光の強さが半分とは限らない)。3成分が同じ値なら無彩色(白と黒の間)になるので、#808080は中間の明るさの色と予想できる。ここは筆者の計算と推測であり、実際の見え方はモニターの設定でも変わる。
3桁表記の#fb0は、各桁を重ねて#ffbb00と解釈する。末尾に0を足して#f0b000とするのは誤りである[4]。つまり3桁表記で表せる色は、各桁が16段階の組みあわせ(16³=4,096通り)に限られる。これも筆者の計算だ。6桁なら256³=16,777,216通りまで指定できるので、3桁は精度をけずった略記だと分かる。
5. AからFの もじの えらび方を、「ばかげている」と いった 人
5. 「A〜F」の選び方は、1968年に批判された
5. 16進数の記号A〜Fの定着と、1968年のマーチンによる批判
16しんすうでは、10から 15を AからFで あらわします。でも、この えらび方を 「ばかげている」と いった 人が います。
1968年、アメリカの けんきゅうじょの ブルース・マーチンさんは、ざっしに 手がみを おくり、こう かきました[5]。「ABCDEFを えらんだのは ばかげて いる。あたらしい きごうを かんがえる ときだ」と。
マーチンさんは、ビットの ならびに もとづいた きごうを すすめました。でも、ひろまりませんでした[5]。いまも AからFが つかわれて います。
みなさんは、どう おもいますか。
文字を借りる方式が広まったのは1960年代
16進数では、10〜15をAからFと書く表記が1960年代に広まり、1966年ごろにはFORTRAN IVというプログラミング言語のマニュアルで、事実上の標準になったと、Wikipediaには書かれています[5]。ただし、IBMがこの書き方を「発明した」と言い切れる資料ではありません。広まった時期の話です。
「ばかげた選び方」と書いた研究者
それから数年後の1968年、ブルックヘブン国立研究所のブルース・マーチンが、アメリカの学会誌への投書でA〜Fの選び方を「ridiculous(ばかげている)」と批判したと紹介されています[5]。そして、ビットの並びにもとづく新しい記号を提案しました。
ただしこの提案は広まらず、現在もA〜Fが使われています[5]。投書そのものではなく紹介された引用にもとづく内容なので、細部は原文を読んで確かめたいところです。
16進数のA〜F表記は、IBM System/360が登場した1960年代に広まり、1966年ごろのFORTRAN IVのマニュアルで事実上の標準になったとされる[5]。ただしこれは百科事典の記述で、年代は二次資料にもとづき、原典の照合はしていない。「IBMが発明した」という意味ではなく、定着した時期の話である。
では、この選び方に異論はなかったのか。1968年、ブルックヘブン国立研究所のブルース・マーチンは、アメリカの学会誌(CACM)への投書で、16進数の記号にA〜Fを選んだことを「ridiculous」と批判し、ビットの位置に基づく新しい記号体系を提案した、と紹介されている[5]。この提案は普及しなかった。
記号の選び方に異論を述べる人がいたこと自体は、「A〜Fは自然に決まった」という理解に疑問を投げかける材料になる。
この批判が仮に当たっていたとしても、すでに使われていた表記を置きかえるのは難しい。現在、色コードでも#FF0000のように、A〜Fが使われ続けていることがその例だ[4]。
6. かみと えんぴつで やって みよう
6. 好きな数を、紙の上で16進数にしてみる
6. 手計算の検算 ── 200を16進数にして、逆算で確かめる
1から 255までの 数を 1つ えらんで、かみに かいて みましょう。たとえば 200です。
200を 16で わると、12 あまり 8。12は C、あまりは 8。だから 200は「C8」です。
ぎゃくに C8を もどして みます。12×16+8は、192+8で 200。もとの 数に もどれば、あって います。
じぶんの すきな 数でも やって みて ください。色の 本で 「#」の コードを みつけたら、2つずつ 区切って、よんで みましょう。
紙と鉛筆で、16進数に直す
0から255までの好きな数を1つ選び、16で割った商と余りを、それぞれ16進数の1文字に直します。200なら、200÷16=12余り8。12はCなので、200はC8です。
逆算で確かめられます。C8を、12×16+8と計算すれば、192+8=200で元の数に戻ります。できた16進数を10進数に戻し、255のうちどれくらいかを考えてみましょう。
色コードを紙の上で読む練習
紙に「#404040」「#808080」「#C0C0C0」と書き、2文字ずつ10進数に直してみます。40は64、80は128、C0は192です。3つとも赤・緑・青が同じ数なので、数が大きいほど白に近い灰色だと予想できます。
手計算で16進数を扱うなら、10進→16進は16で割った商と余りを順に取り、逆算して検算するのが基本になる。200なら、200=12×16+8、12はC、8は8なので「C8」だ。逆にC8=12×16+8=200で元に戻る。ここまでは再現できるが、3桁以上の数や小数は別の手順になるため、ここでは扱わない。
この記事の材料のうち、A〜Fの定着時期と1968年の批判は、Wikipediaの記述と、そこで紹介された引用にもとづいている[5]。紙と鉛筆で、「A〜F」という文字を借りる表記と、マーチンが提案した「ビットにもとづく記号」の違いを整理してみると、批判の中身が見えてくる。
色コードの仕様はW3CのCSS Color Module Level 3に、8ビットと2進数の基礎は新潟大学の講義資料に書かれている[4][2]。どちらも英語・日本語の公開資料で、数式と例が手計算で追える。
しらべた もとの じょうほう
参考にした情報源
参考にした情報源と、その使い方
2026年10月3日に参照。16進数の定着時期([5])と「ビット」の語源([6])は百科事典にもとづき、原典は未照合。
- Intel 教育「デジタル情報」 https://www.intel.co.jp/content/www/jp/ja/education/k12/the-journey-inside/explore-the-curriculum/digital-information.html (トランジスターのオン・オフとビット)
- 新潟大学 情報処理概論「2進数と16進数」 https://www.econ.niigata-u.ac.jp/~nagai/gairon_d/2and16.pdf (16進数の16文字、256通り、FFと255)
- @IT 情報マネジメント用語事典「16進数」 https://atmarkit.itmedia.co.jp/icd/root/62/5783562.html (2進数4桁と16進数1桁の対応)
- W3C「CSS Color Module Level 3」 https://www.w3.org/TR/css-color-3/ (#rrggbbの色指定、255と3桁表記)
- Wikipedia「Hexadecimal」 https://en.wikipedia.org/wiki/Hexadecimal (A〜Fの定着時期と1968年の批判)
- Wikipedia「Bit」 https://en.wikipedia.org/wiki/Bit (「ビット」の語源)
- 群馬大学 情報処理概論資料(小林、2016) https://kobaweb.ei.st.gunma-u.ac.jp/news/pdf/2016/2016-10-2wasan-kobayashi.pdf (2状態を使う理由)
- Wikipedia「Binary number」 https://en.wikipedia.org/wiki/Binary_number (2進法を使う理由)
なおした ところ
更新履歴
更新履歴(改版の記録)
- 初版を公開。
このサイトでは、公開した記事の本文は原則として書き直しません。誤りが見つかったときや、内容が古くなったときだけ手を入れ、その理由をこの欄に残します。