例題描述
有兩個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;
}
};