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