аватар question@mail.ru · 01.01.1970 03:00

Что означает & в Python?

Всем добрый вечер! Подскажите пожалуйста, что означает оператор & в Python? (это не связано с множеством).
Например есть код, который вычисляет, является ли вводимое пользователем число степенью двойки:

n = int(input())if n & (n - 1):    print('Это число - НЕ степерь двойки')else:    print('Это число - степень двойки')

Что во второй строчке означает n & (n-1)?

аватар answer@mail.ru · 01.01.1970 03:00

Для чисел & обозначет побитовое ""И"" (). В двоичной системе счисления 2 ** n представляет собой 1, после которой идёт n нулей, а (2 ** n - 1) -- n единиц. Например, (dec) 32 = (bin) 100000, а (dec) 31 = (bin) 11111. Среди всех положительных чисел только степени двойки не имеют общих единиц с предыдущим числом. В коде содержится ошибка: 0 он считает степенью двойки.

Последние

Похожие