не понимаю откуда взяли число

откуда взяли число?
#фильтр на 4,5,6 биты
number &= 0b1110000
я понял ,что это в 2 системе счисления
но 1110000 в 2 = 112 в 10
откуда взяли число? #фильтр на 4,5,6 биты number &= 0b1110000 я понял ,что это в 2 системе счисления но 1110000 в 2 = 112 в 10


Ответы (2 шт):

Автор решения: Евгений

Возьму для примера число 157 [10] = 10011101 [2]

> number = 0b10011101
> number &= 0b1110000 

Что происходит во втором операторе? Сопоставим разряды чисел и произведём побитовое умножение:

10011101
01110000
--------
00010000

10000 [2] = 16 [10]. Убедимся в этом:

> print(number)
16

Операция & - это операция побитового and, если опустить формальности - побитового умножения:

0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1

В данном случае нам не так важно, что 1110000 [2] = 112 [10].
1110000 - это всего лишь маска для другого числа, позволяющая оставить 4-6 биты и отсечь 0-5 биты.

→ Ссылка
Автор решения: Zhihar

любое число можно представить в двоичном виде

в двоичном виде число состоит из бит, которые могут быть установлены в 0 или в 1

биты считаются справа налево

чтобы получить какие-то биты числа надо применить операцию логическое И:

bits = number & 0b1110000

в результате операции у числа все биты кроме 4, 5, 6 будут сброшены в 0, а 4, 5 и 6 бит останутся теми, что есть

например было число:

number = 0b1011101

bits будет тогда:

bits = 0b1010000

ну и чтобы найденные биты 101 были в виде числа, то надо избавиться от 0, 1, 2, 3 бит, для чего результат надо сдвинуть вправо на 4 бита

bits >>= 4

в результате получится

bits = 0b101

В общем подучите булеву логику и представление чисел в двоичной системе

→ Ссылка