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

更新二进制位

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

标签:二进制   c++   代码   

        该题的思路是首先把 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;
    }


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

更新二进制位

标签:二进制   c++   代码   

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

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