package com.thinker.test.test5;

public class Test_5_1{

	/**
	 *	题目：
	 *   给定两个32位的整数N和M以及表示比特位置的i和j。编写一个方法，将M插入N使得M从N的第
	 *   j位开始，到第i位结束。假定从j位到i位足以容纳M也即若M=10011，那么j和i之间至少可容
	 *   纳5个位。例如，不可能出现j=3和i=2的情况，因为第3位和第二位之间放不下M。		
	 * 
	 * 
	 **/
	public static void main(String[] args){
		System.out.println(go(32,5,4,1));
	}
	public static int go(int n, int m, int i, int j){
		int h = ~0;
		int right = h << (j+1);
		int left = (1 << i) - 1;
		int mask = left | right;
		int clear = n & mask;
		int m_h = m << i;
		int result = clear | m_h;
		return result;
	}
}
