标签:
参考http://www.hawstein.com/posts/5.1.html
方案1:先将N中第0位到第i位保存下来(左闭右开:[0, i)),记作ret, 然后将N中第0位到第j位全清0([0, j]),通过向右移动j+1位然后再向左移动j+1位得到。 最后用上面清0后的值或上(m«i)再或上ret即可。
class Solution { public: /** *@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 right = n & ((1 << i) - 1); int left = j >= 31? 0 : (n >> (j + 1)) << (j + 1); return left | (m << i) | right; } };
标签:
原文地址:http://www.cnblogs.com/codingEskimo/p/5684145.html