码迷,mamicode.com
首页 > 其他好文 > 详细

Update Bits

时间:2016-07-19 13:34:42      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

参考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;
    }
};

 

Update Bits

标签:

原文地址:http://www.cnblogs.com/codingEskimo/p/5684145.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!