残余ビット
読み: ザンヨビット
残余ビット (Remainder Bits) とは、QR コードのすべてのコードワードをシンボル内に配置し終えたあと、データ領域に残った端数のモジュールを埋めるためのビットです。値はすべて 0 と規定されており、データとしての意味は持ちません。QR コードの国際規格 ISO/IEC 18004 で、バージョンごとに個数が定められています。
なぜ余りが生まれるのですか?
QR コードのデータは 8 ビット単位のコードワードで管理されますが、シンボル内でデータの配置に使えるモジュール数 (ファインダーパターンなどの機能パターンと形式情報・バージョン情報を除いた数) は、必ずしも 8 の倍数になりません。コードワードを敷き詰めたあとに 8 未満の端数モジュールが残る場合があり、この端数を 0 で埋めたものが残余ビットです。誤り訂正の計算対象には含まれず、読み取り結果にも影響しません。
バージョン別の残余ビット数
| バージョン | 残余ビット数 |
|---|---|
| 1 | 0 |
| 2〜6 | 7 |
| 7〜13 | 0 |
| 14〜20 | 3 |
| 21〜27 | 4 |
| 28〜34 | 3 |
| 35〜40 | 0 |
個数が 0・3・4・7 のいずれかに限られるのは、バージョンごとのモジュール数と機能パターンの配置から機械的に決まる値だからです。生成ライブラリが自動で処理するため利用者が意識する場面はほぼありませんが、QR コードの内部構造をビット単位で追うときには欠かせない存在です。
終端パターンとの違いは?
どちらも「余りを埋める 0」ですが、働く層が異なります。終端パターンはエンコード段階でデータビット列の末尾に付く「データの終わり」の印で、誤り訂正計算より前に挿入されます。一方の残余ビットは、誤り訂正まで済んだ全コードワードをモジュールとして配置し終えた最終段階で、領域の端数を埋めるものです。マスク処理は符号化領域全体に適用されるため、残余ビットのモジュールにもマスクがかかります。