前述の偶数パリティチェックの場合、元のデータ1とデータ2の距離が1であるということは、データ1の"1"の数が偶数であれば、データ2の"1"の数は奇数ということになる。
そうすると、データ1のチェックビットは"0"、データ2のチェックビットは"1"となる。データとチェックビットを合わせたコードワード1とコードワード2を考えると、データビットの部分で距離1であり、さらにチェックビットの部分で距離1であるので、両者の距離は2ということになる。したがって、1ビットのエラーではコードワード1はコードワード2に化けることはない。また、その他のコードワードとの距離も2以上であり、コードワード1が1ビットのエラーで他のコードワードに化けることはなく、1ビットエラーの発生を検出できることになる。
しかし、パリティチェックでは、2ビットのエラーが発生するとコードワード1がコードワード2に化けてしまうということが起こり、受信側ではコードワード2が送られてエラーなしで届いたとみなしてしまいエラーを検出することはできない。
図2.10に示すように、コードワード間の最短距離を3にすることができると、2ビットのエラーが起こってもコードワード1がコードワード2に化けることが無くなり、2ビットのエラーを検出できるようになる。
一般に、mビットのエラーを検出するためには、2つのコードワード間の最短距離がm+1以上となるようにチェックビットを決める必要がある。
このようなチェックビットをどうやって決めるのかということについては後回しにして、実用的に良く使われているエラー検出コードを見ていこう。
上記のようなハミング距離に基づく理論的なコード以前のチェック法で、プログラムによるソフトウェア処理でエラーを見つける方法として良く使われたのが、チェックサムという方法である。チェックサムでは、送信するデータ全体を8ビットずつの数値データの繋がりと考え、最初の8ビットの値に次の8ビットの値、その次の8ビットの値とすべての8ビットの値を加算していく。ただし、このとき、8ビットの加算からの桁あふれは無視する。そして、加算で最後にできた8ビットの値をチェックビットとして元のデータに付加する。
受信側では同様にして、受け取ったデータを8ビットずつの数値として足して行き、加算結果が、送られてきた8ビットのチェックビットと一致していれば、エラーなし。不一致であればどこかにエラーがあると判断する。
このチェックサムは1ビットのエラーを検出できることは明らかであるが、複数ビットのエラーでは検出できるものもあるが、検出できないものもある。