Обычно вычитание выполняется как отрицание, затем добавляется. Так что для вашего примера, центральный процессор будет принимать 56 и добавить -66. На x86 (или большинстве других современных процессоров) отрицание будет выполнено с дополнением до двух, что означает перевод отрицания на «дополнить все биты, затем добавить один (и игнорировать любое выполнение)».
0011 1000
- 0100 0010
---------
Второй операнд преобразуется следующим образом:
complement bits: 1011 1101
Increment: 1011 1110
Итак, операция, которая выполняется:
0011 1000
+ 1011 1110
--------------
= 1111 0110
Этот результат можно рассматривать как 246 (как число без знака) или -10 (как число со знаком).