/*
问题描述:给出两个32位的整数N和M,以及两个二进制位的位置i和j。写一个方法来使得N中的第i到j位等于M(M会是N中从第i为开始到第j位的子串)
来源:LintCode
作者:syt
问题描述:给出两个32位的整数N和M,以及两个二进制位的位置i和j。写一个方法来使得N中的第i到j位等于M(M会是N中从第i为开始到第j位的子串)
来源:LintCode
作者:syt
日期:2017-8-22
思路:由于题目的提示中已经给出,i到j有足够的空间放置m,将n中的第i到j之间的数字全部置为0,最后与m异或即可
*/
#include <iostream>
using namespace std;
/**
*@param n, m: Two integer
*@param i, j: Two bit positions
*return: An integer
*/
int updateBits(int n, int m, int i, int j) {
// write your code here
int index = i;
for (;i <= j;)
{
n = n & ~(1 << i);
i++;
}
n = n ^ (m << index);
return n;
}