Как взять бит № 3 из 8 бит - PullRequest
3 голосов
/ 07 мая 2019

У меня есть это в шестнадцатеричном: 08 Что в двоичном виде: 0000 1000 (битовые позиции: 7,6,5,4,3,2,1,0)

Теперь я хотел бы сделать битовую маску в python, поэтому у меня есть битовая позиция 3.
Вот в примере 1 или лучше (тот, что в ""): 0000 "1"000

Что мне делать, чтобы иметь только этот бит?

Спасибо

Ответы [ 2 ]

7 голосов
/ 07 мая 2019

Сдвиг вправо на битовый индекс, чтобы этот бит находился в 0-й позиции, затем И с 1, чтобы изолировать его.

val = 0b01001000  # note the extra `1` to prove this works
pos = 3
bit = (val >> pos) & 1
print(bit)

выводит 1

4 голосов
/ 07 мая 2019

Вы можете просто сделать это:

def get_bit(n, pos):
    return (n >> pos) & 1

res = get_bit(n=8, pos=3) 
# 1

сдвинуть число n влево на pos бит (>> pos) и затем замаскировать остальные (& 1).

Документ по Побитовые операции с целочисленными типами может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...