将m的二进制数位插入到n进制的第j到第i位,二进制的位数从低位到高位,且从0开始。
以下是代码
class BinInsert {
public:
int binInsert(int n, int m, int j, int i) {
int k=n;
int o=j;
while(i>0)
{
k=k>>1;
k=k<<1;
i--;
}
while(o>0)
{
m=m<<1;
o--;
}
k=k|m;
while(j>0)
{
k=k|(n&1);
j--;
}
return k;
}
};
我先把k的前i位数位用位操作符置为0;
然后再把m的数位向左移j位,
最后让k和m|以下,
最后补上j位之前的比特位,就大功告成了。