Пусть signed char x=9; (чтобы 1 байт был и меньше писать
)
x=00001001(2)
~x=11110110(2)
А вот теперь переводим в 10-ную, не забывая, что компьютер хранит числа в дополнительном коде (далее ДК). То есть абсолютное значени отрицательного числа (т.е. у которого старший бит =1) можно всего получить, инвертируя всё, кроме знака и прибавляя 1.
~1110110(2)=0001001(2)
00001001(2)+1 = 00001010(2)=10(10) - итого, модуль числа 10.
Результат: -10
Подробнее про дополнительный код здесь:
Дополнительный код