Для каких целей в Python используются побитовые операции
Столкнулся с побитовыми операциями. Изучил побитовое сложение, конъюнкцию и дизъюнкцию. Таблицы истинности и все, что с этим связано. Но не нашел понятных примеров кода применения. Был бы признателен, если бы кто-нибудь привел пример понятного кода применения побитовых операций
Ответы (1 шт):
Автор решения: MarianD
→ Ссылка
Пример:
FLAG_MATH = 0b001
FLAG_BIOL = 0b010
FLAG_CHEM = 0b100
student = FLAG_MATH | FLAG_BIOL & ~FLAG_CHEM # 0b011 простейшее, но непонятное
if student & FLAG_MATH:
print ("Сделал экзамен по математике.")
else:
print ("Провалился на экзамене по математике.")
Вывод:
Сделал экзамен по математике.
Объяснение:
Для студентов используем отдельные биты для отдельных предметов. Значение 1 значит, что он сделал экзамен, 0 - что провалился.
Теперь (см. student = ...):
- включение флага (присвоение значения
1) - оператор|с маской, в которой1на соответствующей позиции, - выключение флага (присвоение значения
0) - оператор&с маской, в которой0на соответствующей позиции,, - переключение флага (
0на1,1на0) - operator^с маской, в которой1на соответствующей позиции.
Тест:
флаг включенный? - Оператор
&с маской, в которой включен только соответствующий бит (т.е. все остальные0), например0b001, что в нашем примереFLAG_MATH:if student & FLAG_MATH: