ZigZag Encoding
ZigZag 编码将有符号整数映射为无符号整数,使绝对值小的负数也占用少量字节,配合 Varint 实现高效变长编码。
用途
在变长整数编码中让小负数(如 -1)与小正数一样紧凑,避免负数因补码高位全 1 而膨胀。
机制
映射规则:n ≥ 0 → 2n,n < 0 → 2|n|-1。即 0→0, -1→1, 1→2, -2→3, 2→4…使整数按绝对值交替排列,小值映射为小无符号数。
用例
- Protobuf sint32/sint64 变长编码
- 紧凑有符号整数序列化
- 数据库变长有符号列