例题描述
有两个32
位整数n
和m
,请编写算法将m
的二进制数位插入到n
的二进制的第j
到第i
位,其中二进制的位数从低位数到高位且以0
开始。
给定两个数int n
和int m
,同时给定int j
和int i
,意义如题所述,请返回操作后的数,保证n
的第j
到第i
位均为零,且m
的二进制位数小于等于i-j+1
。
示例1:
- 输入
1024,19,2,6
- 输出
1100
解题思路
m
:1024:10000000000n
:19 : 10011
要把n
的二进制值插入m
的第j
位到第i
位,只需要把n
先左移j
位,然后再进行或运算(|
)即可。
- m:
10000000000
- n:
00001001100
- |:
10001001100
代码实现
class BinInsert {
public:
int binInsert(int n, int m, int j, int i) {
m <<= j;
return n | m;
}
};