更新二进制位

来源:互联网 发布:知乎无法注册 编辑:程序博客网 时间:2024/06/05 02:00
/*
问题描述:给出两个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 hereint index = i;for (;i <= j;){n = n & ~(1 << i);i++;}n = n ^ (m << index);return n;}


原创粉丝点击