Битовые операции: маски, флаги и двоичная логика
Битовые операции работают с двоичным представлением чисел. Они встречаются в школьной информатике рядом с системами счисления, логикой, кодированием и олимпиадными задачами.
Краткий ответ
Битовые операции работают с двоичным представлением чисел. Они встречаются в школьной информатике рядом с системами счисления, логикой, кодированием и олимпиадными задачами.
Битовые операции работают с двоичным представлением чисел. Они встречаются в школьной информатике рядом с системами счисления, логикой, кодированием и олимпиадными задачами.
Основные операции:
- & — побитовое И;
- | — побитовое ИЛИ;
- ^ — исключающее ИЛИ;
- << — сдвиг влево;
- >> — сдвиг вправо.
Проверка четности и отдельных битов
Число четное, если его последний двоичный бит равен 0.
number = int(input())
if number & 1 == 0:
print('четное')
else:
print('нечетное')
Чтобы проверить k-й бит, используют маску 1 << k.
number = 13
k = 2
if number & (1 << k):
print('бит установлен')
else:
print('бит не установлен')
Число 13 в двоичной системе — 1101, поэтому бит с номером 2 установлен.
Флаги в одной переменной
Маска позволяет хранить несколько признаков в одном числе. Например, ученик решил задачи 0, 2 и 3.
mask = 0
mask |= 1 << 0
mask |= 1 << 2
mask |= 1 << 3
print(bin(mask))
Когда это полезно
Битовые операции нужны не в каждой школьной задаче, но они хорошо связывают программирование с устройством компьютера. Они помогают понять двоичную запись, логические операции, кодирование признаков и перебор подмножеств.
Начинайте с простых проверок: четность, количество единиц в двоичной записи, установка и снятие бита. После этого маски перестают выглядеть магией и становятся компактным инструментом.
Что важно запомнить
- Битовые операции работают с двоичным представлением чисел.
- Они встречаются в школьной информатике рядом с системами счисления, логикой, кодированием и олимпиадными задачами.
- Основные операции: & — побитовое И; | — побитовое ИЛИ; ^ — исключающее ИЛИ; << — сдвиг влево; >> — сдвиг вправо.
- Число четное, если его последний двоичный бит равен 0.
https://yadro-code.ru/lessons/without-university/school-programming-basics/school-programming-23