人間が10進数(基数10)を使うのは手の指が10本あるからですが、コンピュータはトランジスタのON/OFF(オンとオフ)を識別するため2進数(基数2)を使用します。基数の理解はプログラミングやウェブの色指定、電子工作において不可欠です。
広く使われる4つの基数
| 基数 | 名称 | 使用する数字 | 主な用途 |
|---|---|---|---|
| 10 | 10進数 (Decimal) | 0–9 | 日常生活の算数 |
| 2 | 2進数 (Binary) | 0–1 | コンピュータ内部の演算・論理回路 |
| 8 | 8進数 (Octal) | 0–7 | Unixのパーミッション設定 |
| 16 | 16進数 (Hexadecimal) | 0–9, A–F | メモリアドレス、CSSカラーコード |
2進数の計算原理
2進数では 0 と 1 のみを使用します。桁の位置は 2 のべき乗(1, 2, 4, 8, 16, 32, 64, 128)を表します。2進数の 11111111 は 10進数で 255(128+64+32+16+8+4+2+1)に相当します。
計算例: 10進数の 255 を 2進数に変換。2で割り続け、余りを下から順に読み取ります:
- 255 ÷ 2 = 127 余り 1
- 127 ÷ 2 = 63 余り 1
- 63 ÷ 2 = 31 余り 1
- 31 ÷ 2 = 15 余り 1
- 15 ÷ 2 = 7 余り 1
- 7 ÷ 2 = 3 余り 1
- 3 ÷ 2 = 1 余り 1
- 1 ÷ 2 = 0 余り 1
結果: 11111111。base converter で検証できます。
身近な16進数:ウェブのカラーコード
HTML/CSS のカラーコードは16進数です。#FF5733 の場合、赤=FF(255)、緑=57(87)、青=33(51) を意味します。16進数の1桁は2進数の4ビットと完全に1対1で対応するため、1バイト(0〜255)を綺麗に2桁(00〜FF)で表現できます。
なぜプログラマは16進数を好むのか
長大な 0 と 1 の並びよりもコンパクトで、バイト境界にぴったり一致するため、メモリアドレスやバイナリデータの確認が容易になります。
よくある質問
なぜ16進数がよく使われるのですか? 16進数1桁が2進数4ビットに等しく、1バイトを2文字で簡潔に表現できるためです。
プログラミングの「0x」とは? 後続の数値が16進数表記であることを示すプレフィックスです(例: 0xFF は10進数の255)。
2進数をすばやく読むコツは? 下位桁から4桁ずつ区切って16進数に置き換えます。2の累乗計算の詳細は exponents explained をご覧ください。