コラム:いろいろな進数

目次

説明

このコラムは少し難しい内容について扱います。初心者の方は、読まずに済ませても構いません。

プログラミングに少し慣れてきてから読むとよいでしょう。

進数

普段、私たちが使っている数字体系は、「0123456789」と来て、1桁上がります。こうした、10の数字ごとに桁が上がる数字体系を『10進数』と呼びます。

コンピュータでは、「01」と来て、1桁上がる数字体系を使っています。こうした2つの数字ごとに桁が上がる数字体系を『2進数』と呼びます。

ただ、人間がそのまま2進数を扱うのは、桁数が大きくなりすぎるため、あまり適切ではありません。たとえば、10進数で「999」と書けばよいところを、2進数では「1111100111」と書かなければなりません。プログラム中で数字を扱うには、10進数か、それに近い数字体系を使いたいところです。

そこで用いられているのが『16進数』です。大きな値を2進数より短く書け、2進数4桁分で16進数1桁分になるというメリットがあります。16進数では、数字とアルファベットを使い、0から15までの数値を表します。

10進数 2進数 16進数
0 0 0
1 1 1
2 10 2
3 11 3
4 100 4
5 101 5
6 110 6
7 111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
16 10000 10
17 10001 11
: : :
参考

テキストファイルの仕組み

英数字のテキストファイル

コンピューターのファイルは、0と1で現されるデータがたくさん並んでいます。

英数字のテキストファイルでは、このデータを「4つを1単位」として区切り、その「2つ分」でどの文字かを決めています。

1単位(4つ)が2つなので「4×2」で8つ分。0と1が8桁分なので「2の8乗」となり、「256個の文字」を表せます。

この1単位(0000~1111)は、16進数1桁分(0~F)です。そのため、0と1が8桁分は「16進数2桁分」と言い換えられます。

2進数より16進数の方が見やすいため、慣例的に16進数で文字コードを表記します。

コンピュータの世界では、英数字1文字分に相当する16進数2桁分を『1バイト』と呼びます。2進数1桁分は『1ビット』と呼びます。そのため、『1バイト = 8ビット』となります。

英数字の文字コード

文字 10進数の数字 2進数の数字 16進数の数字
c 99 1100011 63
a 97 1100001 61
t 116 1110100 74

英数字以外のテキストファイル

英数字や記号だけなら、256文字で表すことができますが、日本語だと漢字もありますので表すことができません。そのため、もっと多い桁数で表します。

その際、Shift_JISは2バイト(16進数4桁)で表します。そのため、日本語のような文字を『2バイト文字』と呼んだりします。

UTF-8では、日本語だけでなく、多くの言語の文字も表現可能になっています。そのため、英数字の1バイト以外に、2バイトの、3バイトの文字などがあります。日本語は3バイトで表現します。

日本語Shift_JISの文字コード

文字 10進数の数字 16進数の数字
33483 82CB
33457 82B1

日本語UTF-8の文字コード

文字 10進数の数字 16進数の数字
14909869 E381AD
14909843 E38193
参考