16進数とは?2進数・10進数との変換方法をわかりやすく解説

  • 2026.08.28
       
16進数とは?活用例・基数変換方法・変換表

ソースコードの中に「0x1A」と書かれていたり、CSSで「#2E8B57」のような文字列を見かけたりしたことはないでしょうか。
私もエンジニアの勉強を始めたばかりの頃は、「数字とアルファベットが混ざった見慣れない記号だな」と戸惑った記憶があります。
実はこれ、16進数の表記なんです。
16進数は0〜9の数字にA〜Fのアルファベットを組み合わせて数を表すもので、基数は16になります。

コンピュータの内部ではすべて2進数で処理されていますが、2進数は桁数がどうしても多くなってしまいます。
そこで人間が扱いやすいように、16進数に置き換えることがよくあります。2進数の4桁はちょうど16進数の1桁に対応するため、変換も難しくありません。

この記事では16進数の基本ルールから、色指定やデータ通信での使われ方、0xやカラーコードの読み方、Python・JavaScript・Excelでの変換方法まで解説します。
基本情報技術者試験で問われる計算パターンについても触れているので、ぜひ最後まで読んでみてください。

16進数をちゃんと理解するための基礎知識

10進数の仕組み

16進数の前に、まず10進数について解説します。
私たちが普段の生活で使っているのが、この10進数です。

10進数は「0」「1」「2」……と数を数えていき、「9」まで来ると1桁では表せなくなるため、桁を1つ増やして「10」とします
使える数字が0から9までの10種類であることから、10進数と呼ばれています。

10進数で9の次に10になり、桁が1つ増える様子を示した図

基数とは何か

1つの桁に出てくる数字の数を「基数」といいます
基数は「底」と呼ばれることもあります
10進数は10を、16進数は16を基数(底)とする数え方です。

16進数とは

16進数の数え方

10進数とは、「0」から「9」の10種類を使いますが、16進数には16種類の数字を使います。
しかし、文字としての数字は「0」から「9」の10種類しかないため、アルファベットのA~Fを「数字」 として使用します
16進数の場合、「9」の次は「A」(10進数で言うところの10)、「B」(10進数で言うところの11)・・・と続き、「F」(10進数で言うところの15)まで表現します。
ここまでは1桁ですが、10進数で言うところの16に該当する値は16進数だと「10」と表現します。

10進数 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
2進数 0 01 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000
16進数 0 1 2 3 4 5 6 7 8 9 a b c d e f 10

ちなみに、2進数は「0」と「1」の2種類で値を表現します。

▼あわせてチェック▼
コンピュータ処理に欠かせない「2進数」とは? 2進数とは?基礎知識、変換方法をわかりやすく解説

コンピュータでは2進数が用いられます。
しかし、2進数ですべてを表現しようとするとデメリットがあります。
2進数は桁上がりが激しく、大きな値を2進数で表現しようとするとそうしても桁数も多くなってしまいます。
たとえば、10進数の10は2進数では「1010」ですが、 16進数では「A」と表せます。

このように、大きな値を表すのに2進数ではなく16進数が重宝されます。

(例)

10進数 2進数 16進数
1 1 1
10 1010 A
100 110 0100 64

2進数を下桁から4桁ごとに区切り、4桁単位で16進数に置きかえられます。

16進数にはアルファベットが混ざる分、慣れるまで難しく感じるかもしれませんが、「0」と「1」だけで表現する2進数よりは、 はるかに扱い易いでしょう。

プログラミングにおける「0x」表記

16進数の「10」は、10進数の「10」とは違う値(10進数でいう16)を指します。
数字だけを見比べても、どちらの意味かは区別できません。

そこで多くのプログラミング言語では、16進数の値の先頭に「0x」という接頭辞を付けて区別します
「0x」が付いている数値は16進数として読む、というルールです。

10進数 16進数(0x表記)
9 0x9
10 0xA
15 0xF
16 0x10
255 0xFF

「0x10」は10進数の16を表しており、これを「10」と読み間違えると本来の値を見誤ってしまいます。
ソースコードの中で「0x」を見かけたら、16進数が使われているサインだと考えればOKです。

16進数がコンピュータ関連で登場する理由

16進数がコンピュータ関連で重宝されるのは、コンピュータにとっても人間にとっても都合がいいからです。

コンピュータの内部では2進数がすべての基本ですが、人間がそのまま読み書きするのは大変です。
たとえば10進数の100は、2進数だと「1100100」と7桁にもなります。
これを16進数にすると「64」の2桁で済み、桁数がぐっと減ります

一方でコンピュータ側から見ても、16進数は10進数より扱いやすい進数です。
理由は単純で、2進数の4桁(4ビット)が、そのまま16進数の1桁に対応するからです。
桁の対応がシンプルなぶん、変換の処理も軽くて済みます。

16進数の活用例

16進数はコンピュータ分野で幅広く活用されています。

色の指定

Webページの文字色の指定は16進数で行います。
RGB値といって、左から2桁ずつ、00からFFまで(10進数では0から255に相当)の256種類で赤、緑、青の色の階調を表し、3色の合成されたものが表示されています。
つまり、256×256×256=16,777,216通りの色を表せます。
先頭に付く「#」は、この後に続く6桁が16進数のカラーコードであることを示す記号です。
6桁は2桁ずつ3つに分かれており、それぞれ赤(R)・緑(G)・青(B)の強さを表しています。

表記 赤(R) 緑(G) 青(B)
#FF0000 FF 00 00
#00FF00 00 FF 00
#2E8B57 2E 8B 57 深緑

たとえば「#FF0000」は、赤の強さが最大(FF)で、緑と青が0のため、赤一色になります
「#」の後ろの数字を2桁ずつ区切って読むことで、どんな色を表しているかを読み解けるようになります。

文字コード

ASCIIでは文字を16進数で表します

プログラミング

プログラミングのメモリアドレスやビットフラグなどにおいて16進数を使ってより簡潔に値を表現することがあります。

データ通信

データ通信のパケットやバイト列を16進数で表示することがあります。

データベース関連

データベース管理やバックアップに2進数や16進数でデータのインポート・エクスポートを行うことがあります。

ネットワーク関連

IPアドレスなどのネットワーク関連領域で16進数が用いられることがあります。

基数変換の手順

ある進数で示された値を、別の進数に置きかえることを基数変換といいます
ここでは、10進数の201(2進数では11001001、16進数ではC9)を例に、6つの変換方法を解説します。

2進数→10進数への基数変換

2進数の各桁には、右から1、2、4、8、16……という重みがあります。
桁が「1」であれば重みをそのまま使い、「0」であれば0として扱い、すべての桁を足し合わせると10進数になります

桁の重み 128 64 32 16 8 4 2 1
2進数の値 1 1 0 0 1 0 0 1
掛けた結果 128 64 0 0 8 0 0 1

128+64+8+1=201となり、2進数「11001001」は10進数の201です。

10進数→2進数への変換

10進数の値を2で割り、商が0になるまで割り算を繰り返します。出てきた余りを下から順に並べると2進数になります

割られる数 割る数 余り
201 2 100 1
100 2 50 0
50 2 25 0
25 2 12 1
12 2 6 0
6 2 3 0
3 2 1 1
1 2 0 1

余りを下から並べると11001001となり、10進数の201は2進数の11001001です。

2進数→16進数への変換

2進数を右から4桁ずつ区切り、それぞれを10進数に直したうえで16進数の1文字に置き換えます

区切った4桁 1100 1001
10進数 12 9
16進数 C 9

並べるとC9となり、2進数の11001001は16進数のC9です。

16進数→2進数への変換

16進数の1文字を10進数に直し、それを4桁の2進数に置きかえますA〜Fは10〜15として扱います)。

16進数 C 9
10進数 12 9
2進数(4桁) 1100 1001

つなげると11001001となり、16進数のC9は2進数の11001001です。

10進数→16進数への直接変換

10進数を16で割ることで、2進数を経由せず直接16進数に変換できます
値を16で割り、値が0になるまで割り算を繰り返し、余りを下から順に並べます。

割られる数 割る数 余り
201 16 12 9
12 16 0 12(C)

余りを下から並べるとC9となり、10進数の201は16進数のC9です。

16進数→10進数への直接変換

16進数の各桁には、右から1、16、256……という重みがあります。
各桁の値(A〜Fは10〜15)に重みを掛けて合計すると10進数になります

桁の重み 16 1
16進数の値 C(12) 9
掛けた結果 192 9

192+9=201となり、16進数のC9は10進数の201です。

n進数→10進数への基数変換

各桁を10進数に直して合計します

(例1)16進数の2A→16×2+10=42

(例2)2進数の101→2∧2×1+2∧0×1=4+1=5

10進数→n進数への基数変換

変換する10進法の数をnで割り、余りの数を右に記述します。出た商を連続で割り、下から逆L字に数字を拾うことでn進法に変換できます

10進数の17を2で割り続け、余りを下から並べて2進数の10001に変換する筆算の図

主要言語での変換方法

ここまでは手計算による変換方法を紹介しましたが、実際のプログラミングでは、関数を使うことで簡単に変換することができます
ここでは、Python・JavaScript・Excelでの変換方法を紹介します。

Pythonでの変換方法

10進数を16進数に変換するには、hex()関数を使います。

Python
value = 201
print(hex(value))
実行結果
0xc9

16進数を10進数に変換するには、int()関数の第2引数に16を指定します。

Python
value = "c9"
print(int(value, 16))
実行結果
201

JavaScriptでの変換方法

10進数を16進数に変換するには、数値のtoString()メソッドに16を渡します。

JavaScript
let value = 201;
console.log(value.toString(16));

16進数を10進数に変換するには、parseInt()関数の第2引数に16を指定します。

JavaScript
let value = "c9";
console.log(parseInt(value, 16));

Excelでの変換方法

10進数を16進数に変換するには、DEC2HEX関数を使います。

Excel
=DEC2HEX(201)

16進数を10進数に変換するには、HEX2DEC関数を使います。

Excel
=HEX2DEC("C9")

早見表【10進数・2進数・16進数】

10進数 2進数 16進数
0 00000000 0
1 00000001 1
2 00000010 2
3 00000011 3
4 00000100 4
5 00000101 5
6 00000110 6
7 00000111 7
8 00001000 8
9 00001001 9
10 00001010 a
11 00001011 b
12 00001100 c
13 00001101 d
14 00001110 e
15 00001111 f
16 00010000 10
17 00010001 11
18 00010010 12
19 00010011 13
20 00010100 14
21 00010101 15
22 00010110 16
23 00010111 17
24 00011000 18
25 00011001 19
26 00011010 1a
27 00011011 1b
28 00011100 1c
29 00011101 1d
30 00011110 1e
31 00011111 1f
32 00100000 20
33 00100001 21
34 00100010 22
35 00100011 23
36 00100100 24
37 00100101 25
38 00100110 26
39 00100111 27
40 00101000 28
41 00101001 29
42 00101010 2a
43 00101011 2b
44 00101100 2c
45 00101101 2d
46 00101110 2e
47 00101111 2f
48 00110000 30
49 00110001 31
50 00110010 32
51 00110011 33
52 00110100 34
53 00110101 35
54 00110110 36
55 00110111 37
56 00111000 38
57 00111001 39
58 00111010 3a
59 00111011 3b
60 00111100 3c
61 00111101 3d
62 00111110 3e
63 00111111 3f
64 01000000 40
65 01000001 41
66 01000010 42
67 01000011 43
68 01000100 44
69 01000101 45
70 01000110 46
71 01000111 47
72 01001000 48
73 01001001 49
74 01001010 4a
75 01001011 4b
76 01001100 4c
77 01001101 4d
78 01001110 4e
79 01001111 4f
80 01010000 50
81 01010001 51
82 01010010 52
83 01010011 53
84 01010100 54
85 01010101 55
86 01010110 56
87 01010111 57
88 01011000 58
89 01011001 59
90 01011010 5a
91 01011011 5b
92 01011100 5c
93 01011101 5d
94 01011110 5e
95 01011111 5f
96 01100000 60
97 01100001 61
98 01100010 62
99 01100011 63
100 01100100 64
101 01100101 65
102 01100110 66
103 01100111 67
104 01101000 68
105 01101001 69
106 01101010 6a
107 01101011 6b
108 01101100 6c
109 01101101 6d
110 01101110 6e
111 01101111 6f
112 01110000 70
113 01110001 71
114 01110010 72
115 01110011 73
116 01110100 74
117 01110101 75
118 01110110 76
119 01110111 77
120 01111000 78
121 01111001 79
122 01111010 7a
123 01111011 7b
124 01111100 7c
125 01111101 7d
126 01111110 7e
127 01111111 7f
128 10000000 80
129 10000001 81
130 10000010 82
131 10000011 83
132 10000100 84
133 10000101 85
134 10000110 86
135 10000111 87
136 10001000 88
137 10001001 89
138 10001010 8a
139 10001011 8b
140 10001100 8c
141 10001101 8d
142 10001110 8e
143 10001111 8f
144 10010000 90
145 10010001 91
146 10010010 92
147 10010011 93
148 10010100 94
149 10010101 95
150 10010110 96
151 10010111 97
152 10011000 98
153 10011001 99
154 10011010 9a
155 10011011 9b
156 10011100 9c
157 10011101 9d
158 10011110 9e
159 10011111 9f
160 10100000 a0
161 10100001 a1
162 10100010 a2
163 10100011 a3
164 10100100 a4
165 10100101 a5
166 10100110 a6
167 10100111 a7
168 10101000 a8
169 10101001 a9
170 10101010 aa
171 10101011 ab
172 10101100 ac
173 10101101 ad
174 10101110 ae
175 10101111 af
176 10110000 b0
177 10110001 b1
178 10110010 b2
179 10110011 b3
180 10110100 b4
181 10110101 b5
182 10110110 b6
183 10110111 b7
184 10111000 b8
185 10111001 b9
186 10111010 ba
187 10111011 bb
188 10111100 bc
189 10111101 bd
190 10111110 be
191 10111111 bf
192 11000000 c0
193 11000001 c1
194 11000010 c2
195 11000011 c3
196 11000100 c4
197 11000101 c5
198 11000110 c6
199 11000111 c7
200 11001000 c8
201 11001001 c9
202 11001010 ca
203 11001011 cb
204 11001100 cc
205 11001101 cd
206 11001110 ce
207 11001111 cf
208 11010000 d0
209 11010001 d1
210 11010010 d2
211 11010011 d3
212 11010100 d4
213 11010101 d5
214 11010110 d6
215 11010111 d7
216 11011000 d8
217 11011001 d9
218 11011010 da
219 11011011 db
220 11011100 dc
221 11011101 dd
222 11011110 de
223 11011111 df
224 11100000 e0
225 11100001 e1
226 11100010 e2
227 11100011 e3
228 11100100 e4
229 11100101 e5
230 11100110 e6
231 11100111 e7
232 11101000 e8
233 11101001 e9
234 11101010 ea
235 11101011 eb
236 11101100 ec
237 11101101 ed
238 11101110 ee
239 11101111 ef
240 11110000 f0
241 11110001 f1
242 11110010 f2
243 11110011 f3
244 11110100 f4
245 11110101 f5
246 11110110 f6
247 11110111 f7
248 11111000 f8
249 11111001 f9
250 11111010 fa
251 11111011 fb
252 11111100 fc
253 11111101 fd
254 11111110 fe
255 11111111 ff
256 100000000 100

あなたのご希望に沿った案件が必ず見つかります
【フリーランス向け】高収入好待遇の案件をご紹介

TECH MANIA フリーランス

≫まずは簡単60秒で無料お問い合わせから≪

ITスキルの習得方法は?

書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。

ただ、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。

プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。

<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~

このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。

     

Otherカテゴリの最新記事