ZigZag Encode
ZigZagエンコーディングは符号付き整数を符号なし整数へ写像し(0→0、-1→1、1→2、-2→3…)、Varintと組み合わせてコンパクトな符号化を実現する。
目的
可変長符号化の下で、小さな負の数を小さな正の数と同じくらいコンパクトにする。
メカニズム
式は n ≥ 0 → 2n、n < 0 → 2|n| - 1 である。ビット演算では (n << 1) ^ (n >> 31) となる。
ユースケース
- Protobufのsintエンコーディング
- コンパクトな符号付きシリアライズ