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

  • 2026.07.23
       
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進数と呼ばれています。

基数とは何か

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進数012345678910111213141516
2進数00110111001011101111000100110101011110011011110111110000
16進数0123456789abcdef10

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

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

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

(例)

10進数2進数16進数
111
101010A
100110 010064

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

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

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

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

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

10進数・16進数(0x表記)対応表
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進数になります

10進数から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文字に置き換えます

2進数から16進数への変換表
区切った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進数から2進数への変換表
16進数 C 9
10進数 12 9
2進数(4桁) 1100 1001

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

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

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

10進数から16進数への直接変換表
割られる数 割る数 余り
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進数から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進法に変換できます

主要言語での変換方法

ここまでは手計算による変換方法を紹介しましたが、実際のプログラミングでは、関数を使うことで簡単に変換することができます
ここでは、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進数
0000000000
1000000011
2000000102
3000000113
4000001004
5000001015
6000001106
7000001117
8000010008
9000010019
1000001010a
1100001011b
1200001100c
1300001101d
1400001110e
1500001111f
160001000010
170001000111
180001001012
190001001113
200001010014
210001010115
220001011016
230001011117
240001100018
250001100119
26000110101a
27000110111b
28000111001c
29000111011d
30000111101e
31000111111f
320010000020
330010000121
340010001022
350010001123
360010010024
370010010125
380010011026
390010011127
400010100028
410010100129
42001010102a
43001010112b
44001011002c
45001011012d
46001011102e
47001011112f
480011000030
490011000131
500011001032
510011001133
520011010034
530011010135
540011011036
550011011137
560011100038
570011100139
58001110103a
59001110113b
60001111003c
61001111013d
62001111103e
63001111113f
640100000040
650100000141
660100001042
670100001143
680100010044
690100010145
700100011046
710100011147
720100100048
730100100149
74010010104a
75010010114b
76010011004c
77010011014d
78010011104e
79010011114f
800101000050
810101000151
820101001052
830101001153
840101010054
850101010155
860101011056
870101011157
880101100058
890101100159
90010110105a
91010110115b
92010111005c
93010111015d
94010111105e
95010111115f
960110000060
970110000161
980110001062
990110001163
1000110010064
1010110010165
1020110011066
1030110011167
1040110100068
1050110100169
106011010106a
107011010116b
108011011006c
109011011016d
110011011106e
111011011116f
1120111000070
1130111000171
1140111001072
1150111001173
1160111010074
1170111010175
1180111011076
1190111011177
1200111100078
1210111100179
122011110107a
123011110117b
124011111007c
125011111017d
126011111107e
127011111117f
1281000000080
1291000000181
1301000001082
1311000001183
1321000010084
1331000010185
1341000011086
1351000011187
1361000100088
1371000100189
138100010108a
139100010118b
140100011008c
141100011018d
142100011108e
143100011118f
1441001000090
1451001000191
1461001001092
1471001001193
1481001010094
1491001010195
1501001011096
1511001011197
1521001100098
1531001100199
154100110109a
155100110119b
156100111009c
157100111019d
158100111109e
159100111119f
16010100000a0
16110100001a1
16210100010a2
16310100011a3
16410100100a4
16510100101a5
16610100110a6
16710100111a7
16810101000a8
16910101001a9
17010101010aa
17110101011ab
17210101100ac
17310101101ad
17410101110ae
17510101111af
17610110000b0
17710110001b1
17810110010b2
17910110011b3
18010110100b4
18110110101b5
18210110110b6
18310110111b7
18410111000b8
18510111001b9
18610111010ba
18710111011bb
18810111100bc
18910111101bd
19010111110be
19110111111bf
19211000000c0
19311000001c1
19411000010c2
19511000011c3
19611000100c4
19711000101c5
19811000110c6
19911000111c7
20011001000c8
20111001001c9
20211001010ca
20311001011cb
20411001100cc
20511001101cd
20611001110ce
20711001111cf
20811010000d0
20911010001d1
21011010010d2
21111010011d3
21211010100d4
21311010101d5
21411010110d6
21511010111d7
21611011000d8
21711011001d9
21811011010da
21911011011db
22011011100dc
22111011101dd
22211011110de
22311011111df
22411100000e0
22511100001e1
22611100010e2
22711100011e3
22811100100e4
22911100101e5
23011100110e6
23111100111e7
23211101000e8
23311101001e9
23411101010ea
23511101011eb
23611101100ec
23711101101ed
23811101110ee
23911101111ef
24011110000f0
24111110001f1
24211110010f2
24311110011f3
24411110100f4
24511110101f5
24611110110f6
24711110111f7
24811111000f8
24911111001f9
25011111010fa
25111111011fb
25211111100fc
25311111101fd
25411111110fe
25511111111ff
256100000000100

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

TECH MANIA フリーランス

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

ITスキルの習得方法は?

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

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

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

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

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

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

     

Otherカテゴリの最新記事