uval = (val<<1) ^ (val>>31);
[1] https://github.com/LordJZ/libflac/blob/master/src/libFLAC/bi...
postcard's zigzag encoding matches phoboslab's psuedocode.
Edit, not totally sure, but this wiki page rings a bell, and is probably where I got my impl from: https://en.wikipedia.org/wiki/Variable-length_quantity#Zigza...
Edit 2: I also explain why I do this (it compresses better) in my wire format specification: https://postcard.jamesmunns.com/wire-format.html#signed-inte...
[1] https://github.com/LordJZ/libflac/blob/master/src/libFLAC/bi...