pythonでbit操作の勉強をしています。
ビットマスクを作るために、以下のようなコードを書きました。
そのマスクを使って、10000000000の、2から6ビットまでを10011で置き換えようとしています。
Python
1def bitmask(n: int, m: int, i: int, j: int): 2 a = ~0 #..11111 3 left = a << (j + 1) # 4 right = (1 << i) - 1 #..000011 5 mask = left | right 6 7 m_shifted = m << i 8 print(bin(m_shifted)) 9 n = n | mask 10 ans = m_shifted | n 11 return ans 12 13 14if __name__ == "__main__": 15 res = bitmask(10000000000, 10011, 2, 6) 16 print(bin(res))
この結果、
res:-0b10001となります。
意図しているのは10001001100ですが、どこがおかしいのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。