package com.anuragkapur.ctci.bitmanipulation;
/**
* @author anuragkapur
*/
public class Prob5_1_InsertMIntoN {
public int insert(int n, int m, int j, int i) {
// clear bits j...i in N
n = clearBits(n, j, i);
// left shift m by i;
m = m << i;
// insert m into cleared n
return n | m;
}
private int clearBits(int num, int j, int i) {
int ones = (int)Math.pow(2, j-i+1) - 1;
ones = ones << i;
int mask = ~ones;
return num & mask;
}
}