а он с отрицательными странно работает
4550 | -46
Если использовать отрицательное число, то нужно показать компьютеру, что это число является отрицательным. Для этого используется дополнительный код (two's complement). Как его получить ? Довольно просто. Запись неотрицательного числа называется прямым кодом. Для начала нам нужен обратный код, т.е. поразрядная инверсия прямого кода. А если мы прибавим единицу к младшему разряду обратного кода, то уже получим дополнительный код, который и будет являться записью отрицательного числа.
0001 0001 1100 0110
OR
1111 1111 1101 0010
=
1111 1111 1101 0110
=
-42