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 编码
- 紧凑有符号序列化
ZigZag 编码将有符号整数映射为无符号整数(0→0,-1→1,1→2,-2→3…),配合 Varint 紧凑编码。
使小负数在变长编码中与小正数一样紧凑。
公式:n≥0→2n,n<0→2|n|-1。位运算:(n<<1)^(n>>31)。