В моей программе (написанной на Python 3.4) у меня есть переменная, которая содержит различные флаги, например:
FLAG_ONE = 0b1
FLAG_TWO = 0b10
FLAG_THREE = 0b100
status = FLAG_ONE | FLAG_TWO | FLAG_THREE
Установка другого флага может быть легко выполнена с помощью
status |= FLAG_FOUR
Но что, если я явно хочу очистить флаг? Я бы сделал
status &= ~FLAG_THREE
Безопасен ли этот подход? Поскольку размер целого числа в Python не определен, что делать, если status
и FLAG_THREE
отличаются по размеру?
(status
должно быть поле бит, потому что мне нужно это значение для аппаратного протокола.)