ハミング符号の解説(応用情報技術者シラバス用語)

ハミング符号の解説(応用情報技術者シラバス用語)
目次

ハミング符号とは

ハミング符号.png

ハミング符号とは、デジタルデータを通信で送受信したり、ストレージに保存したりする際に、データの中に生じた「誤り(エラー)」を自動的に検出して正しい状態に修正(訂正)するための仕組みです。ITの世界では「誤り訂正符号」の一つとして広く知られています。

コンピュータが扱うデータはすべて「0」と「1」の集まりですが、電気的なノイズなどの影響で「0」が「1」に化けてしまうことがあります。ハミング符号では、元のデータに対して特殊な計算によって求めた「チェック用のデータ(パリティビット)」を複数追加して送信します。受け取り側では、送られてきたデータとチェック用のデータを照らし合わせることで、データが壊れないかを確認し、もし1箇所だけデータが反転していた場合はその位置を特定して自動的に元通りに修正することができます。

具体例

身近な例として、コンピュータのメインメモリ(ECCメモリ)が挙げられます。メモリにデータを書き込んだり読み出したりする際、微弱な宇宙線や電圧の乱れでデータが化けることがあります。ECCメモリにハミング符号が採用されているおかげで、1ビットのデータ誤りが発生しても、コンピュータはシステムをクラッシュさせることなく、自動的に誤りを直して処理を続けることができます。

もう少し詳しく

ハミング符号は、1950年にリチャード・ハミングによって考案されました。その仕組みの根底にあるのは「ハミング距離」という概念です。これは、2つの同じ長さの符号の間で、対応するビットが異なっている箇所の数を指します。ハミング符号では、データビットの間に特定のパリティビットを巧みに配置することで、符号間の最小ハミング距離を3以上に保ちます。最小ハミング距離が3であるため、1ビットの誤りが発生した場合はその位置を特定して訂正することができ、2ビットの誤りが発生した場合は誤りがあること自体を検出(訂正は不可)することができます。これを「1ビット誤り訂正・2ビット誤り検出(SEC-DED:Single Error Correction - Double Error Detection)」と呼び、信頼性を高めるために広く使われています。

試験でのポイント

応用情報技術者試験などのシラバスにおいては、ハミング符号の「誤り検出・訂正能力」が非常によく問われます。具体的には、「1ビットの誤りを訂正でき、2ビットの誤りを検出できる」という特性を理解しているか、あるいはハミング符号における情報ビット数とパリティビット数の関係式を理解しているかが問われます。また、奇数パリティや偶数パリティを単に組み合わせる「パリティチェック(1ビットの誤り検出のみ可能、訂正は不可)」や、バースト誤りの検出に適した「CRC(巡回冗長検査)」といった他の誤り制御手法との違いについても整理しておく必要があります。特にパリティチェックは「検出のみで訂正はできない」のに対し、ハミング符号は「訂正まで可能」である点を明確に区別しておきましょう。

関連する用語

ハミング符号を理解する上での関連用語としては、まずデータの誤り検出に広く使われる「パリティチェック(パリティビット)」があります。また、ネットワーク通信の分野でフレームの誤り検出に利用される「CRC(巡回冗長検査)」も重要な比較対象です。さらに、ハードウェア的な適用例として、サーバー用のメインメモリに搭載されている誤り訂正機能である「ECC(Error Correcting Code)」も合わせて覚えておくと、実務や試験での理解がより深まります。

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ