给定两个32位整数n和m,同时给定i和j,将m的二进制数位插入到n的二进制的第j到第i位,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1,其中二进制的位数从0开始由低到高。
测试样例:
1024,19,2,6
返回:1100
# -*- coding:utf-8 -*-
class BinInsert:
def binInsert(self, n, m, j, i):
m = m << j
return n + m
# -*- coding:utf-8 -*-
class BinInsert:
def binInsert(self, n, m, j, i):
m = m << j
return n | m
此题要注意负数的情况!!!代码如下:
import java.util.*;
public class BinInsert {
public int binInsert(int n, int m, int j, int i) {
// write code here
if(i<j)
return 0;
int flagm=1;
int flagn=1;
flagn=flagn<<j;
//int count=1;
while(flagm!=0){
if((flagm & m)!=0){
n=(n|flagn);
}
flagn=flagn<<1;
flagm=flagm<<1;
}
return n;
}
}
class BinInsert {
public:
int binInsert(int n, int m, int j, int i) {
// m左移j位
m <<= j;
return n | m;
}
};
class BinInsert {
public:
int binInsert(int n, int m, int j, int i) {
// write code here
return n + (m << j);
}
};