package me.ramswaroop.bits; /** * Created by IntelliJ IDEA. * * @author: ramswaroop * @date: 6/9/15 * @time: 12:26 PM */ public class AbsWithoutBranching { /** * Returns the absolute value of any integer. * <p/> * EXPLANATION: * For example, consider int takes 4 bits: * So for input = -5, we have * -5 = 1011 * mask = 1111 * mask + n = 1010 * (mask + n)^mask = 0101 (which is 5) * * @param n * @return */ public static int abs(int n) { int mask = n >> 31; return (mask + n) ^ mask; } public static void main(String a[]) { System.out.println(abs(-5)); System.out.println(abs(5)); System.out.println(abs(0)); System.out.println(abs(-0)); } }