Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package com.fasterxml.jackson.dataformat.smile;

Class for miscellaneous helper methods.
 
 public class SmileUtil
 {
     public static int zigzagEncode(int input) {
         // Canonical version:
        //return (input << 1) ^  (input >> 31);
        // but this is even better
        if (input < 0) {
            return (input << 1) ^ -1;
        }
        return (input << 1);
    }
    public static int zigzagDecode(int encoded) {
        // canonical:
        //return (encoded >>> 1) ^ (-(encoded & 1));
        if ((encoded & 1) == 0) { // positive
            return (encoded >>> 1);
        }
        // negative
        return (encoded >>> 1) ^ -1;
    }
    
    public static long zigzagEncode(long input) {
        // Canonical version
        //return (input << 1) ^  (input >> 63);
        if (input < 0L) {
            return (input << 1) ^ -1L;
        }
        return (input << 1);
    }
    public static long zigzagDecode(long encoded) {
        // canonical:
        //return (encoded >>> 1) ^ (-(encoded & 1));
        if ((encoded & 1) == 0) { // positive
            return (encoded >>> 1);
        }
        // negative
        return (encoded >>> 1) ^ -1L;
    }
New to GrepCode? Check out our FAQ X