package com.interview.bits; /** * http://www.careercup.com/question?id=17542662 */ public class SwapTwoBits { public int swap(int num,int i, int j){ int t1 = (num & 1<<j) != 0 ? 1 : 0; int t2 = (num & 1<<i) !=0 ? 1 : 0; num = num & ~(1<<j); num = num & ~(1<<i); num = num | t1<<i; num = num | t2<<j; return num; } public int betterSwap(int num,int i,int j){ if(((num & 1<<i)>>i ^ (num & 1<<j)>>j) != 0){ num ^= 1<<i; num ^= 1<<j; } return num; } public static void main(String args[]){ SwapTwoBits stb = new SwapTwoBits(); System.out.println(stb.betterSwap(172, 2, 4)); } }