ビットスタッフィング
データ伝送や電気通信において、ビット挿入(英: bit stuffing)は、情報を持たないビットをデータに挿入することである。ビット挿入によるビットは、付加ビット(英語版)とは異なる。
ゼロビット挿入は、いくつかのデータ伝送規約で使用される特定種別のビット挿入であり、データ流からの刻時復元を助ける。IBMのSDLC(後にHDLCに改称)によって普及した。
名前は、0のビットの挿入のみを行うことから来ている。0のビットが連続するのを防ぐために1のビットを挿入することはしない。
SDLCとLow-SpeedおよびFull-Speed USBのデータは、NRZIで符号化されて送信される。NRZIでは、0のビットは信号遷移を引き起こすが、1のビットでは変化しない。1のビットが長く続くと、送信されたデータには遷移が存在しない可能性があり、送信機と受信機の刻時信号の同期が取れなくなる可能性がある。 1が5ビット(SDLCの場合)または6ビット(USBの場合)続いた後に0を挿入することにより、送信機は遷移間の最大時間を保証する。受信機は、適切なデータ復元を保証するために、刻時と遷移を同期させることができる。
SDLCでは、6つの隣接する1のビットを含む送信ビット列"01111110"がフラグバイトである。ビット挿入は、このパターンが通常のデータでは決して起こり得ないことを保証するので、通常のデータと混同される可能性なしに、フレームの始めと終わりの印として使用できる。
このようなビット挿入の主な欠点は、符号化率が予測できないことである。それは、送信されるデータに依存する。