問題
ビット列の指定された位置に別のビット列を挿入せよ.
1
2
| A = 100000000 の 2桁目から6桁目にB = 101101を挿入
-> 101011010
|
答え
1
2
3
4
5
6
7
8
9
| # aのi桁目からj桁目にbを挿入
def insert(a, b, i, j):
ones = ~0 # 全部1
left = ones << (j + 1)
right = (1 << i) - 1
mask = left | right
a &= mask
b <<= i
return a | b
|
(1 << i) - 1:1が$i$個右端に並ぶ