ZigZag Encoding
Die ZigZag-Kodierung bildet vorzeichenbehaftete Ganzzahlen auf vorzeichenlose ab, sodass auch betragsmäßig kleine negative Zahlen wenige Bytes belegen; kombiniert mit Varint ergibt sich eine effiziente variablange Kodierung.
Zweck
Macht kleine negative Zahlen (wie -1) unter variabler Längenkodierung ebenso kompakt wie kleine positive und vermeidet die durch lauter Einsen in den hohen Bits der Zweierkomplementdarstellung verursachte Aufblähung.
Mechanismus
Die Abbildungsregel: n ≥ 0 → 2n und n < 0 → 2|n| - 1 — also 0→0, -1→1, 1→2, -2→3, 2→4... Die Ganzzahlen wechseln sich nach dem Betrag ab, sodass kleine Werte auf kleine vorzeichenlose Zahlen abgebildet werden.
Anwendungsfälle
- Protobuf-sint32/sint64-Kodierung
- Kompakte Serialisierung vorzeichenbehafteter Ganzzahlen
- Variablange vorzeichenbehaftete Spalten in Datenbanken