首页 > 其他 > 详细

更新二进制位

时间:2015-08-29 21:39:08      阅读:213      评论:0      收藏:0      [点我收藏+]

        该题的思路是首先把 int 对应的二进制形式转为 string(主要是 int 难以操作具体的位,转换为 string 形之后操作具体的位就简单多了)然后把 string 再转回 int 返回即可。

 int updateBits(int n, int m, int i, int j) {
        // write your code here
        string sn, sm;
        int flag = 0x01;
        int time = sizeof(int) * 8;
//int 转 string        
        while(time){
            if((n & flag) != 0){
                sn += '1';
            }else{
                sn += '0';
            }
            
            if((m & flag) != 0){
                sm += '1';
            }else{
                sm += '0';
            }
            
            m >>= 1;
            n >>= 1;
            time--;
        }
        
        int l = 0;
        for(int k = i; k <= j; k++){
            sn[k] = sm[l];
            l++;
        }
//string 转 int        
        int result = 0;
        for(int k = sn.length() - 1; k >= 0; k--){
            result <<= 1;
            if(sn[k] == '1'){
                result += 1;
            }else{
                result += 0;
            }
        }        
        return result;
    }


版权声明:本文为博主原创文章,未经博主允许不得转载。

更新二进制位

原文:http://blog.csdn.net/ny_mg/article/details/48091877

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!