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