コンピューターサイエンス入門:理論編
16 進数から 10 進数への変換
この回でやること
16進数の文字と桁の重みを読み解き、4ビットが1文字に対応する関係を確かめます。
- 読む 約 7 分
- 最後にクイズ 1 問
2進数24桁は、目で追いにくい
111111110110011000000000 は長く、読んでいる途中で桁の位置を見失いやすい並びです。
4桁ずつ区切ると、同じ情報を短く表せます。
プレーンテキスト
1111 1111 0110 0110 0000 0000
F F 6 6 0 0CSSの色で見かける #FF6600 の数字部分です。16進数は2進数4桁を1文字に置き換えた表し方です。元のビットの情報は失われません。
4桁で16通りだから、1文字に収まる
2進数4桁は 0000 から 1111 までの16通りです。16進数は16種類の文字を使うので、4ビットと1文字が対応します。数字は10種類なので、足りない6つには A から F を使います。
| 文字 | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 値 | 10 | 11 | 12 | 13 | 14 | 15 |
1バイトは8ビットなので16進数2文字、4バイトは8文字です。メモリやパケットを16進数で並べると、2文字ごとにバイトの境目を追えます。
重みは16倍ずつ増える
10進数に直すときは、また桁の重みを使います。右端から 1、16、256 と、左へ1桁進むたびに16倍です。重みも2の4乗である16倍ずつ増えます。
1A3 は 1 × 256 + 10 × 16 + 3 × 1 = 419 です。中央のAは10を表しますが、その桁が全体に加える値は160になります。
文字と数を分けて読む
画面にある A は文字です。計算するときは、その文字に対応する値10として扱います。数字の文字 7 も同じで、数として読むときは値7に置き換えます。プログラムでは文字のまま足すと、言語によっては文字列をつなぐ操作になります。
大文字と小文字でも値は変わりません。ff、FF、Ff はどれも255です。見た目が違っても、同じ文字の値と桁の重みで読めます。先頭の0にも値はなく、0F と F は同じ15です。1バイトずつ並べるときは0を付け、2文字にそろえると区切りが分かります。
例題で確かめる
パケットの1バイトが16進数で B6 と表示されています。10進数ではいくつかを読み解きます。
プレーンテキスト
Bの値は11、重みは16 11 × 16 = 176
6の値は 6、重みは 1 6 × 1 = 6
合計 176 + 6 = 182答えは182です。2進数では 1011 0110 で、128 + 32 + 16 + 4 + 2 = 182 と一致します。文字の値と重みを分けて確かめます。