2進数とデータ — 0と1がすべての正体

中級の解説は準備中のため、中級の内容を表示しています。

概要 — まず全体をつかむ

初級では「0と1がすべての正体」であることを見ました。中級では、0と1をどう束ね、どんなルールで数・文字・データ量に変換するかを正確に見ます。データの種類やメディア・圧縮そのものは データの正体 が担当します。

詳細 — 1段階ずつ追う

なぜ0と1なのか

コンピュータが2進数を使うのは、電気回路が「流れている/いない」の2状態を最も確実に区別できるからでした。この0か1かの1桁が ビット(bit) で、最小単位です。

ビットが8個集まると 1バイト(byte)。1バイトで2の8乗=256通りを表せます。ここで問題になるのが「2進数は桁が長くて人には読みにくい」こと。たとえば 11010110 は8桁もあります。

そこで登場するのが 16進数 です。4ビット=16進数1桁にちょうど対応するので、1バイトは16進数2桁でスッキリ書けます。

  • 2進 1101 → 16進 D(10進では13)
  • 2進 0110 → 16進 6
  • よって 11010110 → 16進 D6

色コード #FF0000(赤)やメモリのアドレス表示に16進が使われるのは、この「4ビット=1桁」の相性の良さが理由です。

ビットを束ねると何でも表せる

同じ0と1の並びでも、読み方のルールを変えると、数にも文字にも色にもなります。ルールごとに見ていきます。

数(整数)。8ビットで0〜255を表せますが、マイナスも扱いたい。そこで先頭ビットを符号に使い、負の数は 2の補数 という方式で表します。ざっくり言えば「桁を全部反転して1を足す」とマイナスになる仕組みで、これなら引き算を足し算の回路で処理できます。8ビットの符号つき整数なら、表せる範囲は -128〜127 になります。

文字。ここは2段階に分かれます。

  • 文字集合(例:Unicode) — 「あ」は U+3042、「A」は U+0041、と文字に番号を割り当てる台帳
  • 符号化方式(例:UTF-8) — その番号を実際のバイト列に変換するルール
アニメーション『ビット=スイッチのオン/オフ』を開く
ビット = スイッチのオン / オフ1つのスイッチ = 1ビット(bit)ON = 1OFF = 0スイッチ8個 = 1バイト(byte)= 8ビット012816403201618040201各スイッチの重み(128〜1)。ONの重みを足すと数になる010010008ビットの並び(1バイト)数として読むと … 64 + 8 =72文字コードで読むと … 文字Hすべては0と1の並び。「読み方のルール」で意味が決まる

UTF-8は、英数字は1バイト、日本語などは3バイト前後、と文字によってバイト数を変える可変長方式です。だから英語中心のデータは小さく、世界中の文字も表せます。「文字集合=どの文字に何番」「符号化方式=その番号をどうバイトにするか」と役割が分かれている点が要です。

色や音も同じで、画素の色を赤・緑・青の数値に、音の波の高さを数値の列にする。変換ルールが違うだけで、行き着く先はぜんぶ0と1です。

単位の感覚をつかむ

データ量の単位は、10進の1,000区切りと、2進の1,024区切りの2種類があります。

  • 厳密には 1 KiB(キビバイト)= 2の10乗 = 1,024 バイト、1 MiB = 1,024 KiB、1 GiB = 1,024 MiB
  • 一方 1 KB = 1,000 バイト とする10進表記も広く使われる

「1,000か1,024か」で微妙にズレるのはこのためです。ストレージの容量表示(10進)とOSの表示(2進)が食い違って見えるのも、この単位の違いが原因です。

  • 1 KB ≒ 短いメール1通ぶん
  • 1 MB ≒ 写真1枚、曲1分ぶん
  • 1 GB ≒ 映画1本(標準画質)
  • 1 TB ≒ スマホ写真なら数十万枚

圧縮 — 同じ中身をより少ないビットで

データ量を減らす技術が 圧縮 です。大きく2種類あります。

  • 可逆圧縮(ロスレス) — 元に完全復元できる。ZIP、PNG、FLACなど。文書やプログラムのように1ビットも変えられないデータ向き
  • 非可逆圧縮(ロッシー) — 人が気づきにくい情報を捨てて大幅に小さくする。JPEG、MP3、H.264(動画)など。写真・音・動画向き

非可逆は「元に戻せない」代わりに圧縮率が高い。用途に応じて、正確さを優先するか小ささを優先するかで使い分けます。同じ0と1でも、どう詰めるかで容量が変わるわけです。

関連する知識

理解度チェック

そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。

1. 2進数4桁(4ビット)は16進数の何桁にちょうど対応する?

2. 文字集合(Unicode)と符号化方式(UTF-8)の関係として正しいのは?

3. 8ビットの符号つき整数(2の補数)で表せる範囲はどれ?

4. UTF-8が「可変長」と呼ばれる理由として正しいのは?

5. ストレージの容量表示と、OS上で見える容量が微妙に食い違うことがある主な理由は?

6. 次のうち、元に完全復元できる可逆圧縮の例はどれ?

7. 0か1のどちらかを表す、情報の最小単位を何と呼ぶ?

8. 1バイトは何ビットか、半角数字で答えてください。

2進数とデータ — 0と1がすべての正体 | Kotowary