電気通信において、縦方向冗長検査(LRC)、または水平方向冗長検査は、並列に並んだビットストリームのそれぞれに独立して適用される冗長検査の一種です。データは伝送ブロックに分割され、そこに追加の検査データが追加されます。
この用語は通常、ビットストリームごとに1つのパリティビットに適用され、他のすべてのビットストリームとは独立して計算されます(BIP-8)。[ 1 ] [ 2 ]
単純な縦方向パリティではエラーを検出することしかできませんが、横方向冗長検査(TRC)などの追加のエラー制御符号化と組み合わせることで、エラーを訂正することができます。横方向冗長検査は専用の「パリティトラック」に格納されます。
送信データブロックでシングルビットエラーが発生するたびに、このような2次元パリティチェック、または「2座標パリティチェック」[ 3 ]により 、受信側はTRCを使用してエラーが発生したバイトを検出し、LRCを使用してエラーが発生したトラックを正確に検出して、エラーが発生したビットを正確に特定し、そのビットを反転することで修正することができます。[ 4 ] [ 5 ] [ 6 ]
国際規格ISO 1155 [ 7 ]では、バイト列の縦方向冗長性チェックは、ソフトウェアで次のアルゴリズムによって計算できると規定されています。
lrc := 0 バッファ内の各バイトbに対して、 lrc := ( lrc + b )かつ0xFF を実行し、 lrc := ((( lrc XOR 0xFF) + 1)かつ0xFF)を実行します。
これは「全バイトの合計を 2 8で割った値の 8 ビット 2 の補数」と表現できます (x AND 0xFFは と同等です)。x MOD 28
多くのプロトコルは、XOR ベースの縦方向冗長チェックバイト (ブロックチェック文字または BCC と呼ばれることが多い) を使用しており、これにはシリアルラインインターフェースプロトコル (SLIP、後のよく知られたシリアルラインインターネットプロトコルと混同しないように)、[ 8 ]電気メーター読み取り用の IEC 62056 -21 規格、 ISO/IEC 7816で定義されているスマートカード、およびACCESS.busプロトコルが含まれます。
このような8ビットLRCは、多項式x⁸ + 1を用いた巡回冗長検査と同等ですが、そのよう に考えるとビットストリームの独立性はそれほど明確ではありません。