---
title: "CRC方式とは？生成多項式で誤りを検出する方法【基本情報技術者試験】"
description: "CRC方式を「送信データを生成多項式で割った余りを付加して誤りを検出する方式」として整理し、パリティチェック、チェックサム、ハミング符号との違いをFE試験向けに解説します。"
last_modified_at: "2026-07-25"
canonical_url: "https://stemtazoo.github.io/fe/crc/"
section: "fe"
---

## まず結論

CRC方式とは、**送信データを生成多項式で割った余りを付加して、受信側で誤りを検出する方式**です。

基本情報技術者試験では、CRC方式は **生成多項式** というキーワードで判断しやすいです。

CRC方式は、誤りを「訂正する」方式ではなく、主に誤りを「検出する」方式として押さえます。

## 直感的な説明

CRC方式は、**データに検査用の合い言葉を付けて送る**イメージです。

送信側は、送るデータから決まったルールで検査用の値を作ります。  
この検査用の値が、CRCで使う「余り」にあたります。

受信側は、受け取ったデータを同じルールで確認します。

- 送信側で作った検査用の値
- 受信側で計算した検査用の値

この2つが合わなければ、途中でデータが変わった可能性があります。

つまり、CRC方式は **送信側と受信側で同じ計算をして、データが壊れていないかを確認する方法** です。

## 定義・仕組み

CRC方式は、Cyclic Redundancy Check の略で、日本語では **巡回冗長検査** と呼ばれます。

CRC方式では、送信するビット列を、あらかじめ決めた **生成多項式** で割ります。

そのときの余りを、誤り検出用のデータとして送信データに付加します。

流れは次のようになります。

1. 送信側で、送信データを生成多項式で割る
2. 割った余りを送信データに付加する
3. 受信側で、受信したビット列を同じ生成多項式で割る
4. 割り切れるかどうかで、誤りの有無を判断する

試験では、細かい多項式計算そのものよりも、次の対応を押さえることが大切です。

| 用語 | CRC方式での意味 |
|---|---|
| 生成多項式 | CRC方式で使う割り算のルール |
| 余り | 誤り検出用として付加する値 |
| 受信側の確認 | 同じ生成多項式で割り切れるかを見る |
| 主な目的 | 誤りの検出 |

CRC方式は、単純なパリティチェックよりも、複数ビットの誤りや連続した誤りを検出しやすい方式です。

このテーマは、基本情報技術者試験の「ネットワーク」や「データ伝送の誤り制御」と関係する内容です。公式の出題範囲やシラバスは、[IPA：基本情報技術者試験](https://www.ipa.go.jp/shiken/kubun/fe.html) から確認できます。

## 科目Aでどう出る？

科目Aでは、CRC方式はほかの誤り検出・誤り訂正方式と並べて出題されやすいです。

判断するときは、**説明文にどのキーワードが出ているか** を見ます。

| キーワード | 判断 |
|---|---|
| 生成多項式 | CRC方式 |
| 割った余り | CRC方式 |
| 巡回冗長検査 | CRC方式 |
| パリティビット | パリティチェック方式 |
| 水平方向・垂直方向 | パリティチェック方式 |
| 合計値・総和 | チェックサム方式 |
| 1ビット誤りの訂正 | ハミング符号方式 |
| 検査ビット | ハミング符号方式でも使われる |

例えば、次のような説明はCRC方式です。

```text
送信側では、ビット列を生成多項式で割った余りを付加して送信する。
受信側では、同じ生成多項式で割り切れるかどうかで誤りを判断する。
```

この説明では、**生成多項式** と **余り** が出ています。  
そのため、CRC方式と判断できます。

一方で、次のような説明はCRC方式ではありません。

```text
データに検査用のパリティビットを付加して，1の個数が偶数か奇数かを確認する。
```

この説明は、パリティチェック方式です。

科目Aでは、**生成多項式が出たらCRC方式** と考えると、選択肢をかなり切りやすくなります。

## どんな場面で使う？


ビット列や通信の誤り検出を読む問題では、CRC方式の考え方が役立ちます。

CRC方式で大事なのは、送信側と受信側が **同じルールで確認する** ことです。

例えば、次のような流れをイメージします。

```text
送信側：
データを生成多項式で割る
余りをデータに付けて送る

受信側：
受け取ったビット列を同じ生成多項式で割る
割り切れるかを確認する
```

問題文で通信や誤り検出の説明を読むときは、次の順で整理すると分かりやすいです。

1. 送信側で何を付加しているかを見る
2. 受信側で同じルールを使っているかを見る
3. 誤りを検出するのか、訂正するのかを分ける
4. 生成多項式が出ていればCRC方式を疑う

CRC方式は、内部の細かい割り算を覚えるより、**余りを付加して、受信側で再計算する** という流れを押さえるのが実用的です。

## よくある誤解・混同

CRC方式で混同しやすいのは、パリティチェック方式、チェックサム方式、ハミング符号方式です。

| 方式 | 主な目的 | 判断の合図 |
|---|---|---|
| CRC方式 | 誤り検出 | 生成多項式、余り、巡回冗長検査 |
| 垂直パリティチェック方式 | 誤り検出 | 文字ごと・行方向のパリティ |
| 水平パリティチェック方式 | 誤り検出 | 列方向・ブロック方向のパリティ |
| チェックサム方式 | 誤り検出 | 合計値、総和、補数 |
| ハミング符号方式 | 誤り検出と訂正 | 1ビット誤りの訂正、検査ビット |

パリティチェック方式は、データにパリティビットを付けて、1の個数が偶数か奇数かを確認する考え方です。

垂直パリティチェックと水平パリティチェックは、パリティを付ける方向が違います。  
どちらも、基本はパリティビットによる誤り検出です。

チェックサム方式は、データを一定の単位で合計し、その値を検査用データとして使う方式です。  
説明文に **合計値** や **総和** が出てきたら、CRC方式ではなくチェックサム方式を疑います。

ハミング符号方式は、検査ビットを使って、1ビットの誤りを訂正できる方式として出題されやすいです。

ここで大切なのは、CRC方式を「何となく強い誤り検出方式」とだけ覚えないことです。

FE試験では、次のように切り分けます。

- 生成多項式で割るなら、CRC方式
- パリティビットなら、パリティチェック方式
- 合計値や総和なら、チェックサム方式
- 1ビット誤りを訂正するなら、ハミング符号方式

## さらに注意したいひっかけ

CRC方式では、次のようなひっかけにも注意します。

| ひっかけ表現 | なぜ注意する？ |
|---|---|
| 誤りを自動的に訂正する | CRC方式は主に誤り検出。訂正まで行うとは考えない |
| データを暗号化する | CRC方式は誤り検出であり、暗号化ではない |
| データを圧縮する | CRC方式はデータ量を減らす方式ではない |
| 受信側だけで誤り検査用データを作る | 送信側で余りを付加し、受信側で確認する |
| 生成多項式ではなく合計値を使う | チェックサム方式の説明になりやすい |
| 誤りを必ず検出できる | CRC方式でも、すべての誤りを必ず検出できるとは限らない |

特に、**CRC方式は暗号化でも圧縮でもない** という点は押さえておくと安心です。

CRC方式は、通信中にビット列が変わっていないかを確認するための仕組みです。  
データの内容を秘密にする仕組みではありません。

また、CRC方式は誤り検出能力が高い方式ですが、万能ではありません。  
FE試験では「誤り検出方式」として扱い、「必ずすべての誤りを検出する」とまでは考えないようにします。

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

- CRC方式は、生成多項式で割った余りを付加して誤りを検出する方式
- 「生成多項式」「余り」「巡回冗長検査」が出たらCRC方式を疑う
- CRC方式は、主に誤り検出のための方式で、暗号化や圧縮ではない
- パリティチェックは、パリティビットで誤りを検出する方式
- チェックサムは、合計値や総和を使って誤りを検出する方式
- ハミング符号は、1ビット誤りの訂正までできる方式として区別する

## 関連記事

誤り制御方式は、似た用語を並べて切り分けると覚えやすくなります。

- [ハミング符号方式とは？1ビット誤りを訂正できる考え方](https://stemtazoo.github.io/fe/hamming-code/)
- [チェックサム方式とは？合計値で誤りを検出する方法](https://stemtazoo.github.io/fe/checksum/)
