ハミング記号

ハミング記号

 ハミング符号(ハミングきごう、Hamming code)は、エラー検出および修正に使用されるブロック符号の一種です。これは、リチャード・ハミング(Richard Hamming)が開発した符号で、彼の名前にちなんで名付けられました。

 ハミング符号は、データをブロックに分割し、各ブロックに冗長ビットを追加することで、エラーを検出および修正することができます。具体的には、nビットのデータに対して、kビットのデータを追加して(n + k)ビットの符号語を作成します。この追加されたkビットは、元のnビットのデータから導かれます。

 ハミング符号では、エラー検出および修正のための冗長ビットを追加する場所が重要です。冗長ビットは、2の冪乗の位置に追加されます。たとえば、データビットが1、2、3、4、5、6、7、8の場合、冗長ビットは位置1、2、4に追加されます。これにより、2進数表現で冗長ビットの位置に1がある場合は、その位置にあるビットにエラーがあることがわかります。

 ハミング符号は、単一ビットのエラーを検出し、修正することができます。また、複数ビットのエラーも検出できますが、修正はできません。

ハミング符号は、電子通信、コンピューターメモリ、データストレージなど、さまざまな分野で使用されています。

 ハミング符号は、単一ビットのエラーを検出および修正するために設計されていますが、2つのビットエラーを検出することもできます。これは、一部のビットがエラーである場合、エラーがあることを示すビットが変化するためです。ただし、2つのビットエラーを同時に修正することはできません。

 ハミング符号には、さまざまなバリエーションがあります。単一ビットエラーのみを検出し、修正するハミング符号は、(7,4)ハミング符号と呼ばれます。これは、4ビットのデータに3ビットの冗長ビットを追加して、7ビットの符号語を作成します。他のバリエーションには、(15,11)ハミング符号、(31,26)ハミング符号、および(63,57)ハミング符号などがあります。

 ハミング符号の欠点は、データの冗長性が高いことです。冗長ビットを追加することにより、データのサイズが増大するため、データ転送やストレージにより多くのメモリが必要になります。また、ハミング符号は、高速なデータ転送には適していません。そのため、現代のコンピューターシステムでは、より効率的なエラー検出および修正手法が広く使用されています。