2進数・8進数・16進数の基礎:基数変換と仕組み

10進数、2進数、8進数、16進数の仕組みを解説。コンピュータが2進数を用いる理由と、基数間の相互変換手順を実例で紹介します。

人間が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 をご覧ください。