ハミング符号計算機

データの誤り訂正符号(ハミング符号)を計算・生成します。

計算結果

ハミング符号計算機について

このハミング符号計算機は、データ通信や保存において信頼性を高めるために不可欠な「誤り訂正符号」の一つであるハミング符号(特にHamming(7,4)符号)を学習・検証するためのツールです。 デジタルデータは、ノイズや干渉によって0が1に、あるいは1が0に反転してしまう「ビット反転」のリスクに常にさらされています。 ハミング符号は、元のデータに冗長な情報(パリティビット)を巧みに付加することで、1ビットの誤りを自動的に検出し、さらに正しい値に訂正することを可能にします。

本ツールでは、4ビットのデータ(ニブル)を入力して7ビットのハミング符号を生成する「符号化」と、受信した7ビットのコードから誤りを検査し元のデータを復元する「復号」の両方を体験できます。 情報工学、ネットワーク技術、コンピュータサイエンスを学ぶ学生やエンジニアにとって、誤り訂正のメカニズムを直感的に理解するための強力な補助教材となります。

ハミング符号とは?

ハミング符号(Hamming Code)は、1950年にアメリカの数学者リチャード・ハミング(Richard Hamming)によって発明された線形誤り訂正符号です。 コンピュータメモリ(ECCメモリ)やRAIDシステム、衛星通信など、高い信頼性が求められる多くのシステムで現在も広く利用されています。

最も基本的なハミング符号である「Hamming(7,4)」は、4ビットのデータに対して3ビットのパリティビット(検査ビット)を追加し、合計7ビットの符号語を作ります。 この符号の最大の特徴は、**「1ビットの誤りを訂正でき、2ビットの誤りを検出できる(訂正は不可)」**という点です。 パリティビットの位置と計算対象を工夫することで、どのビット位置でエラーが発生したかを特定(シンドローム計算)できるのです。

パリティビットの仕組み

パリティビットは、データの整合性をチェックするためのビットです。 ハミング符号では、データビットの特定の組み合わせに対してパリティを計算します。 一般的に「偶数パリティ(Even Parity)」が使われ、これは対象となるビット(パリティビット自身も含む)の中に含まれる「1」の個数が偶数になるようにパリティビットの値を(0または1に)設定します。

Hamming(7,4)では、ビット位置1, 2, 4(2の累乗の位置)にパリティビットP1, P2, P4を配置し、ビット位置3, 5, 6, 7にデータビットD1, D2, D3, D4を配置します。 それぞれのパリティビットは、以下のビット位置のグループをカバーします:

  • P1 (ビット1): ビット 1, 3, 5, 7 をチェック
  • P2 (ビット2): ビット 2, 3, 6, 7 をチェック
  • P4 (ビット4): ビット 4, 5, 6, 7 をチェック

受信側では、これらのグループのパリティが正しいかどうかを再計算します。もし誤りがあれば、計算結果(シンドローム)が誤りのあるビット位置を2進数で示してくれます。 例えば、シンドロームが「101」(10進数で5)であれば、5番目のビットが反転していることが分かり、それを反転させれば訂正完了です。

誤り訂正の重要性と応用

デジタル社会において、データの正確性は命綱です。例えば、銀行送金データの金額部分のビットが1つ反転しただけで、致命的な結果を招く可能性があります。 また、宇宙空間に送り出された探査機からの微弱な信号は、宇宙線の影響で容易にノイズが混入します。 再送要求(ARQ)も一つの手段ですが、距離が遠い場合やリアルタイム性が求められる場合、受信側で自律的に誤りを直せる機能(FEC: Forward Error Correction)が不可欠です。

主な応用例:

  • ECCメモリ(Error Checking and Correcting Memory): サーバーやワークステーションのRAMに使用され、ソフトエラーによるシステムクラッシュを防ぎます。
  • RAID 2: 現在はあまり使われませんが、ディスクアレイの冗長化にハミング符号の原理が応用されました(現代のRAID 5/6はより高度なパリティ計算を用います)。
  • QRコード: ハミング符号ではありませんが、より強力なリード・ソロモン符号を用いて、汚れや破損があっても読み取れるようになっています。

ハミング距離(Hamming Distance)

誤り訂正能力を語る上で重要な概念が「ハミング距離」です。これは、2つの同じ長さの符号語において、異なるビットの個数を指します。 例えば、「1011」と「1001」のハミング距離は1です(3番目のビットだけ違う)。

符号体系全体の「最小ハミング距離」が、その符号の能力を決定します。

  • 距離が2あれば、1ビットの誤りを検出できます(訂正は不可)。
  • 距離が3あれば、1ビットの誤りを訂正でき、あるいは2ビットの誤りを検出できます。
  • 距離が4あれば、1ビット訂正かつ2ビット検出が同時に可能です(拡張ハミング符号)。
Hamming(7,4)符号は、最小ハミング距離が3であるため、1ビットの誤り訂正能力を持つのです。

計算機の使い方

符号化(Encode)モード

  1. 「計算モード」で「符号化」を選択します。
  2. 「データビット」に4桁の2進数(例: 1011)を入力します。0と1以外の文字は入力できません。
  3. 「パリティタイプ」を選択します(通常は偶数パリティ)。
  4. 「計算する」ボタンを押すと、計算されたパリティビットを含む7桁のハミング符号が表示されます。

復号・訂正(Decode)モード

  1. 「計算モード」で「復号・訂正」を選択します。
  2. 「受信コード」に7桁の2進数(例: 1110101)を入力します。意図的に1ビット変えて試してみてください。
  3. 「パリティタイプ」を送信側と同じ設定(通常は偶数)にします。
  4. 「計算する」ボタンを押すと、誤りの有無、誤り位置、そして訂正後の正しいデータが表示されます。

このツールを通じて、目に見えないデジタルデータの裏側で働く「数学の魔法」とも言える誤り訂正技術を体験してください。 ノイズに負けない強固な通信システムの基礎が、このシンプルなビット操作の中に詰まっています。