誤り検出訂正
誤りには、
短い区間に多数の誤りが集中するバースト誤り
散発的に単独で誤りが発生するランダム誤り
の2種類がある。
多くの誤り検出・訂正は、全体の誤り率が許容範囲でも、バースト誤りに対しては、1つのブロックに多くの誤りが集中するため、対応できない。そこで、符号の順序を入れ替え、同じブロックのデータを分散させ、バースト誤りが1つのブロックに集中しないようにする。この技術をインターリーブという。
一般に誤り検出訂正では、k 単位長(k ビット、k バイト など)の符号を、n = m + k 単位長の符号語に変換する。これを (n, k) 符号、あるいは、符号形式を添えて (n, k) ××符号などと呼ぶ(誤り訂正符号"Error Correction Code"を特にECCと略す)。符号語は、最小ハミング距離が d > 1、つまり、互いに少なくとも d 単位が異なっていて、この冗長性を利用して前方誤り訂正が可能となる。dを添えて、(n, k, d) 符号ともいう。
適切な (n, k, d) 符号は、符号語あたり d - 1 単位の誤りを検出でき、[(d - 1) / 2] 単位([ ] は床関数)の誤りを訂正できる。d ≦ 2 ならば、誤り訂正能力は [(d - 1) / 2] = 0 となり、単なる誤り検出となる。ただし、データの消失に対しては、つまり誤り位置がわかっているときは、d 単位の消失を訂正できる。