16進数(十六進法)とは:基礎知識、表記法と10進数⇔16進数変換

16進数(十六進法)の基礎から表記法・10進数⇔16進数の変換手順まで、図解と例でわかりやすく解説。エンジニア・初心者必見。

著者: Leandro Alegsa

16進数(十六進法)は、基数が16の数値表記体系です。英語では「hexadecimal(ヘキサデシマル)」、略してhex(ヘックス)と呼ばれることが多く、日本語でも「16進法」「16進数」「ヘックス」と表記されます。通常は16種類の記号を使い、0~9の数字に加えて、10~15を表すために アルファベットの A、B、C、D、E、F を用います。これは、16の記号(ベース16)で構成された数字体系であるためです。

なぜコンピュータで使うのか

人間は普段、10進数を使います(指が10本あることが一因とされます)。一方、コンピュータは内部で0と1の2種類の状態(2進数)だけを扱います。長い2進数の列を人間が直接読むのは大変なので、エンジニアはビットをまとまり(グループ)で扱います。現代のコンピュータでは4ビットの塊を1つの単位として扱うことが多く、4ビットで表せる16通りの値と対応させるのに便利なのが16進数です。コンピュータの専門用語で、4ビットは1 ニブル(nybble)と呼ばれ、ニブル1つが16進数の1桁に相当します。ニブル2つで1 バイト(8ビット)になります。

16進数の桁と値の対応

16進数の1桁は次のように対応します。

  • 0 = 0
  • 1 = 1
  • 2 = 2
  • 3 = 3
  • 4 = 4
  • 5 = 5
  • 6 = 6
  • 7 = 7
  • 8 = 8
  • 9 = 9
  • A = 10
  • B = 11
  • C = 12
  • D = 13
  • E = 14
  • F = 15

16進数の各桁は位置によって 16 のべき乗(16^0, 16^1, 16^2, ...)を係数として重みづけされます。たとえば 0x1A3 (あるいは 1A3h)は次のように10進数に変換できます:

1×16^2 + A(=10)×16^1 + 3×16^0 = 1×256 + 10×16 + 3 = 256 + 160 + 3 = 419

16進数と2進数の関係(ビットとの対応)

各16進桁は4ビット(ニブル)に対応するため、2進数と16進数の相互変換が簡単になります。いくつかの例を示します:

  • 0 = 0000
  • 1 = 0001
  • 2 = 0010
  • 3 = 0011
  • 4 = 0100
  • 5 = 0101
  • 6 = 0110
  • 7 = 0111
  • 8 = 1000
  • 9 = 1001
  • A = 1010
  • B = 1011
  • C = 1100
  • D = 1101
  • E = 1110
  • F = 1111

16進数 ⇔ 10進数 の変換方法

16進数 → 10進数(例:0x63)

各桁にその位置の16のべき乗を掛けて足し合わせます。0x63 は 6×16^1 + 3×16^0 = 6×16 + 3 = 96 + 3 = 99(10進数)です。よって、63h と 0x63 は16進数の63(10進数では99)を意味します。

10進数 → 16進数(例:10進数255 を16進数に変換)

  1. 255 ÷ 16 = 15 余り 15 → 余り15はF。
  2. 15 ÷ 16 = 0 余り 15 → これもF(上位桁)。
  3. よって 255(10進) = 0xFF(16進)。

表記法の違いと注意点

  • 一般的な表記:先頭に「0x」を付ける(例:0x1A3)。多くのプログラミング言語で標準的です。
  • アセンブリ言語などでは末尾に「h」を付けることがある(例:1A3h)。ただし、先頭が数字で始まる場合は混同を避けるために先頭に0を付けたりする慣習があります(例:0FFh)。
  • 大文字・小文字は区別されないことが多く、0x1a3 と 0x1A3 は同じ値です。
  • 一部の言語や環境では別の表記(例えば先頭に「$」を付ける)を使うこともあります。使う環境の規則を確認してください。

応用上のポイント

  • メモリアドレスや色コード(CSSの #RRGGBB)、ビットマスクの表示などで16進数がよく使われます。
  • 符号付き整数を16進で表すときは、通常は内部表現(たとえば2の補数)をそのまま16進で表示します。たとえば8ビットの-1は内部的に11111111(二進)=0xFF(16進)です。
  • 小数部分(負数や小数)も16進で表すことは可能ですが、慣用的にはあまり使われません(浮動小数点の内部表現は別途規格に従います)。

まとめると、16進数はコンピュータの2進データを人間が読みやすく表現するために便利な表記法であり、4ビットごとに1桁で対応させられるため、2進数との変換が簡単です。表記には「0x」や「h」などの慣習があるので、文脈に応じて使い分けましょう。

16進数の値

16進数は、それぞれが2進数と簡単に比較できるため、8進数(ベース8)と似ています。16進数は4ビットの2進数コーディングを使用しています。これは、16進数の各桁が2進数の4桁と同じであることを意味します。八進数は3ビットの2進法を使用しています。

10進法では、最初の桁が1の位、左の次の桁が10の位、その次が100の位などとなります。16進法では、各桁は10ではなく16の値をとることができます。つまり、桁には1の位があり16の位があり、次の桁が256の位になります。なので、1h=10進数では1h、10h=16進数では10h、100h=256となります。

16進数を2進数、8進数、10進数に変換した値の例。

六角

バイナリ

オクタル

十進数

0

0

0

0

1

1

1

1

2

10

2

2

3

11

3

3

4

100

4

4

5

101

5

5

6

110

6

6

7

111

7

7

8

1000

10

8

9

1001

11

9

A

1010

12

10

B

1011

13

11

C

1100

14

12

D

1101

15

13

E

1110

16

14

F

1111

17

15

10

1 0000

20

16

11

1 0001

21

17

24

10 0100

44

36

5E

101 1110

136

94

100

1 0000 0000

400

256

3E8

11 1110 1000

1750

1000

1000

1 0000 0000 0000

10000

4096

フェース

1111 1010 1100 1110

175316

64206

変換

2進数から16進数へ

2進数から16進数に変更するには、グループ化の方法を使います。2 進数は、右から順に 4 桁のグループに分割されます。16進数から変更するには、逆の操作を行います。16進数はそれぞれ2進数に変更され、通常はグループ化が解除されます。

バイナリ

グループ化

六角

01100101

0110

0101

65

010010110110

0100

1011

0110

4B6

1101011101011010

1101

0111

0101

1010

D75A

2進数のビット数が4の倍数でない場合は、そのようにするためにゼロを入れています。例としては、以下のようなものがあります。

  • 2進数110=0110で、6進数になります。
  • バイナリ 010010 = 00010010 となり、12 Hexになります。

16進数から10進数へ

16進数から10進数に変換するには、2つの一般的な方法があります。

最初の方法は、手動で変換する場合の方が一般的です。

  1. 16進数の各桁の10進数を使います。0~9の場合は同じですが、A=10、B=11、C=12、D=13、E=14、F=15となります。
  2. 以下の各ステップで変換した数字の合計を保管してください。
  3. 16進数の最下位の数字から始めてください。それが右端の数字です。これが合計の最初の項目になります。
  4. 一番下の桁を取ってください右端の数字の隣です。その桁の10進数に16を掛けてこれを足して合計します。
  5. 3番目に小さい桁についても同じようにしますが、162(つまり16、256)を掛けます。それを合計に加えます。
  6. 桁ごとに、それぞれの桁に16の倍数をかけて続けます。(4096、65536など)

 

場所

6

5

4

3

2

1

1048576 (165)

65536 (164)

4096 (163)

256 (162)

16(161)

1 (160)


次の方法は、ソフトウェアで数字を変換するときに、より一般的に行われています。数字が何桁の桁数を持っているかを知る必要はありませんし、16以上の掛け算をすることもありませんが、紙の上では長く見えます。

  1. 16進数の各桁の10進数を使います。0~9の場合は同じですが、A=10、B=11、C=12、D=13、E=14、F=15となります。
  2. 以下の各ステップで変換した数字の合計を保管してください。
  3. 有効数字(左端の数字)から始めます。これは合計の最初の項目です。
  4. 他の桁が存在する場合は、合計に 16 を掛けて、次の桁の小数点以下の値を加算します。
  5. 桁がなくなるまで上記の手順を繰り返します。


例としては、以下のようなものがあります。5Fhと3425hを10進数にする方法1

 

5Fh~10進数

六角

十進数

5Fh

=

( 5 x 16 )

+

( 15 x 1 )

=

80

+

15

5Fh

=

95

 

3425h~10進数

六角

十進数

3425h

=

( 3 x 4096 )

+

( 4 x 256 )

+

( 2 x 16)

+

( 5 x 1 )

=

12288

+

1024

+

32

+

5

3425h

=

13349

例としては、以下のようになります。5Fhと3425hを10進数にする方法2

 

5Fh~10進数

六角

十進数

乄高

=

5

=

(5 x 16) + 15

乄高

=

80 + 15 (それ以上の桁数はありません)

5Fh

=

95

 

3425h~10進数

六角

十進数

乄高

=

3

=

(3 x 16) + 4 = 52

乄高

=

(52 x 16) + 2 = 834

乄高

=

(834 x 16) + 5 = 13349

3425h

=

13349

関連ページ

質問と回答

Q:16進数とは何ですか?


A:16進数法は16個の記号で構成される16進数法です。

Q:10進法で使われる10個の記号は何ですか?


A:10進法で使われる10個の記号は、0、1、2、3、4、5、6、7、8、9です。

Q:16進法で使用される6つの余分な記号は何ですか?


A:16進法では、英語のアルファベットから取ったA、B、C、D、E、Fを使用しています。

Q:最近のコンピュータでは、1バイトは何ビットですか?


A:最近のコンピュータでは、1バイトは一般に8ビットを含んでいます。

Q:エンジニアやコンピュータ科学者は、4ビットの値を何と呼んでいますか?


A:エンジニアやコンピュータ科学者は、4ビットの値をニブル(nybbleと表記されることもあります)と呼びます。

Q:16進数を書くときに、他の番号体系との混同を避けるにはどうしたらよいですか?


A:16進数を書くときに他の番号付けシステムとの混乱を避けるために、数字の後に「h」または数字の前に「0x」を追加することができます。例えば、63hまたは0x63は16進数で63を意味します。


百科事典を検索する
AlegsaOnline.com - 2020 / 2025 - License CC3