не понимаю откуда взяли число
откуда взяли число?
#фильтр на 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 биты.
любое число можно представить в двоичном виде
в двоичном виде число состоит из бит, которые могут быть установлены в 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
В общем подучите булеву логику и представление чисел в двоичной системе