Операции над числами: a + b a - b a * b a / b a % b # остаток от деления, 5 % 2 = 1 a // b # целочисленное деление, 5 // 2 = 2 a ** b # возведение в степень, 5 ** 2 = 25 -a # смена знака abs(a) # модуль числа ... Битовые операции a | b # побитовое или, 5 | 2 = 7 (101 | 010 = 111) a ^ b # побитовое исключающее или, 3 ^ 7 = 4 (011 ^ 111 = 100) a & b # побитовое и, 3 & 4 = 0 (011 & 100 = 0) a << b # битовый сдвиг влево, 2 << 1 = 4 (10 << 1 = 100) a >> b # битовый сдвиг вправо, 4 >> 1 = 2 (100 >> 1 = 10) Инверсия в питоне определяется как -(x + 1) Это связано с представлением отрицательных чисел в языке Отсюда следует, что ~5 = -6 Почему это так работает? Число 1 с помощью 4 битов представляется как 0001 В то же время -1 это 1111, здесь первый бит слева указывает на то, что это отрицательное число К примеру, запишем числа из диапазона -8 до 7 с помощью 4 битов 7 = 0111 6 = 0110 ... 0 = 0000 ... -6 = 1010 -7 = 1001 -8 = 1000 Таким образом, ~5 = -6, так как ~0101 = 1010 Подробнее про такое