• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

bit演算(range and)

date: 2021-04-22 excerpt: bit演算(range and)について

tag: bit operationbit演算range and


bit演算(range and)について

概要

  • 2つのbit表現の数値(left, right)があるとき、その間の数値をすべてandをとった際にどんな値になるか
  • bit表現を縦に見た時、一つでも0があれば0であり、leftとrightの一致する最大のbitが[left, right]間の値をすべてandをとったものとなる

具体的なコード

def solve(left, right):
    shift = 0
    while 1:
        if left == right:
            break
        left = left >> 1
        right = right >> 1
        shift += 1
    return left << shift

assert solve(left = 5, right = 7) == 4
assert solve(left = 0, right = 0) == 0
assert solve(left = 1, right = 2147483647) == 0

参考

  • 201. Bitwise AND of Numbers Range/LeetCode


bit operationbit演算range and Share Tweet