🔍 Как инвертировать биты в python? Узнайте простые способы в этой статье!
Для инвертирования битов в Python можно использовать оператор "побитового отрицания" (~).
num = 42
inverted_num = ~num
print(inverted_num)
В данном примере переменная num равна 42. Оператор ~ инвертирует все биты в числе, что приводит к выводу -43.
Детальный ответ
Как инвертировать биты в Python
Инверсия битов в Python - это процесс, позволяющий изменить значение каждого бита числа с 0 на 1 и с 1 на 0. Это полезная операция при работе с битовыми масками, шифровании данных и других задачах, связанных с манипуляцией битами.
В Python есть несколько способов инвертировать биты в числе. Ниже приведены некоторые из них с примерами кода:
Способ 1: Побитовое отрицание (Bitwise NOT)
Побитовое отрицание выполняется с помощью оператора ~
. Он инвертирует каждый бит числа. Например:
num = 42
inverted_num = ~num
print(inverted_num)
Этот код выведет результат -43. Двоичное представление числа 42
- 00101010
, а его инвертированное представление - 11010101
.
Способ 2: Использование оператора XOR
Другой способ инвертировать биты - использовать оператор XOR (^
). XOR возвращает 1
, если биты различаются, и 0
, если они одинаковы. Применение XOR с числом, состоящим из одних единиц, даст инвертированное представление числа. Например:
num = 42
inverted_num = num ^ 0xFFFFFFFF
print(inverted_num)
В данном примере результатом будет 4294967253. Здесь используется маска, состоящая из всех единиц (0xFFFFFFFF
) для выполнения операции XOR с числом 42
.
Способ 3: Манипуляция с битовыми операциями
Еще один способ инвертировать биты - использовать битовые операции, такие как сдвиги и побитовые ИЛИ. Ниже приведен пример кода, который демонстрирует этот подход:
num = 42
inverted_num = ((1 << num.bit_length()) - 1) ^ num
print(inverted_num)
В результате выполнения этого кода будет получен тот же результат: 4294967253. Здесь сначала вычисляется количество битов в числе (num.bit_length()
), затем создается маска из единиц, длина которой равна количеству битов числа, сдвигая 1
влево на это количество. Затем маска подвергается операции XOR с числом 42
, чтобы инвертировать его биты.
Вывод
Инвертирование битов - это полезная операция при работе с битовыми масками и шифровании данных. В Python есть несколько способов выполнить это действие, включая побитовое отрицание, использование оператора XOR и манипуляции с битовыми операциями. Каждый из этих способов дает одинаковый результат - инвертированное представление числа.