---
title: "16進数と2進数の変換とは？1桁=4ビットで考える【基本情報技術者試験】"
description: "16進数と2進数の変換を「16進数1桁は2進数4ビット」として整理し、0F、F0、FFなどのビット列をFE試験で迷わず読めるように解説します。"
last_modified_at: "2026-07-25"
canonical_url: "https://stemtazoo.github.io/fe/hex-binary-conversion/"
section: "fe"
---

## まず結論

16進数と2進数の変換は、**16進数1桁を2進数4ビットに置き換える** と考えると分かりやすいです。

基本情報技術者試験では、次の対応をすぐ出せると、ビット演算やマスク処理の問題が解きやすくなります。

```text
16進数1桁 = 2進数4ビット
0 = 0000
F = 1111
0F = 0000 1111
F0 = 1111 0000
FF = 1111 1111
```

特に、`0F` は **下位4ビットが1** なので、下位4ビットを残すマスクとしてよく使われます。

## 直感的な説明

16進数は、2進数を読みやすく短く書くための表し方です。

2進数は、0と1だけで表すので、桁数が長くなりがちです。

例えば、次の2進数を見てください。

```text
1111 1111
```

これは16進数では、次のように短く書けます。

```text
FF
```

ポイントは、2進数を4ビットずつ区切って読むことです。

```text
1111 1111
  F    F
```

つまり、16進数は **4ビットごとの短縮表記** と考えると楽です。

## 定義・仕組み

16進数は、0〜9とA〜Fを使って数を表します。

| 16進数 | 10進数 | 2進数4ビット |
|---:|---:|---:|
| 0 | 0 | 0000 |
| 1 | 1 | 0001 |
| 2 | 2 | 0010 |
| 3 | 3 | 0011 |
| 4 | 4 | 0100 |
| 5 | 5 | 0101 |
| 6 | 6 | 0110 |
| 7 | 7 | 0111 |
| 8 | 8 | 1000 |
| 9 | 9 | 1001 |
| A | 10 | 1010 |
| B | 11 | 1011 |
| C | 12 | 1100 |
| D | 13 | 1101 |
| E | 14 | 1110 |
| F | 15 | 1111 |

FE試験では、すべてを毎回暗記で思い出すより、次の関係を押さえると実用的です。

```text
0 = 0000
1 = 0001
2 = 0010
4 = 0100
8 = 1000
F = 1111
```

そして、A〜Fは10〜15に対応します。

```text
A = 1010
B = 1011
C = 1100
D = 1101
E = 1110
F = 1111
```

このテーマは、基本情報技術者試験の「基礎理論」や「情報に関する理論」と関係する内容です。公式の出題範囲やシラバスは、[IPA：基本情報技術者試験](https://www.ipa.go.jp/shiken/kubun/fe.html) から確認できます。

## 科目Aでどう出る？

科目Aでは、16進数を2進数に直してから、ビット演算を考える問題が出題されやすいです。

例えば、`0F` が出てきたら、まず次のように変換します。

```text
0F
↓
0 = 0000
F = 1111
↓
0000 1111
```

`F0` なら、次のようになります。

```text
F0
↓
F = 1111
0 = 0000
↓
1111 0000
```

よく出る形は、次のように整理できます。

| 16進数 | 2進数 | よくある意味 |
|---|---|---|
| 0F | 0000 1111 | 下位4ビットを指定する |
| F0 | 1111 0000 | 上位4ビットを指定する |
| FF | 1111 1111 | 8ビットすべてを指定する |
| 00 | 0000 0000 | すべて0 |

特に、ビット演算では、`0F` や `F0` が **マスク** として使われます。

```text
0F = 下位4ビットを見たいとき
F0 = 上位4ビットを見たいとき
```

## どんな場面で使う？

問題文では、プログラム中のビット演算やフラグ処理を読むときに、16進数と2進数の変換が役立ちます。

例えば、次のような処理が出てきたとします。

```text
値 AND 0F
```

このとき、`0F` を2進数に直すと、次のようになります。

```text
0F = 0000 1111
```

つまり、下位4ビットだけを残す処理だと分かります。

```text
  1011 0110
AND 0000 1111
=   0000 0110
```

このように、16進数を2進数に直せると、コードの意味を読みやすくなります。

問題文では、計算そのものよりも、**この値はどのビットを見ているのか** をつかむことが大切です。

## よくある誤解・混同

16進数と2進数の変換でよくある誤解は、**16進数1桁を2進数1桁のように見てしまうこと** です。

| 誤解 | 正しい理解 |
|---|---|
| 16進数1桁は2進数1ビット | 16進数1桁は2進数4ビット |
| Fは10進数のFという数字 | Fは10進数の15を表す |
| 0Fは00001111ではなく15だけを表す | 8ビットで見ると0Fは0000 1111 |
| F0と0Fは似た意味 | F0は上位4ビット、0Fは下位4ビット |
| 16進数はビット演算と関係ない | ビット列を短く書くためによく使われる |

特に、`0F` と `F0` は逆にしやすいです。

```text
0F = 0000 1111 → 下位4ビット
F0 = 1111 0000 → 上位4ビット
```

この2つを見分けられると、マスク処理の問題で迷いにくくなります。

## まとめ（試験直前用）

- 16進数1桁は、2進数4ビットに対応する
- `0 = 0000`、`F = 1111`
- `0F = 0000 1111` なので、下位4ビットを指定する
- `F0 = 1111 0000` なので、上位4ビットを指定する
- ビット演算では、16進数を2進数に直して考える
- `0F` と `F0` の位置を逆にしない
