Операции над числами:
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
Подробнее про такое представление чисел можно прочитать здесь
Записать число в другой сс:
a = 0b101 # двоичная сс, a = 5
a = 0x1f # шестнадцатеричная сс, a = 31