Update Bits(更新二进制位)

http://www.lintcode.com/en/problem/update-bits/?rand=true

public class Solution {
    /*
     * @param n: An integer
     * @param m: An integer
     * @param i: A bit position
     * @param j: A bit position
     * @return: An integer
     */
    public int updateBits(int n, int m, int i, int j) {
        // write your code here
//        先找到一个数来和m做与运算,把m的i-j全部变为0
        int mask = (j < 31 ? (~((1 << (j + 1)) - (1 << i))) : ((1 << i) - 1));
        n &= mask;
//        再把m左移i位加上去
        n += m << i;
        return n;
    }
}

推荐阅读更多精彩内容