Последний перенос был отброшен, потому что он не помещается в целевом пространстве. Это будет пятый бит.
Если бы он выполнил то же самое дополнение, но, например, с 8-битной памятью, это выглядело бы так:
00000100
11111101
--------
00000001
В этой ситуации мы также застряли бы с «неиспользованным» переносом.
Мы должны относиться к переноскам таким образом, чтобы правильно сложить их с комплиментом двоих, но это все хорошо, потому что это самый простой способ обработки переносок, когда у вас ограниченное хранилище. В любом случае, мы получаем правильный результат, верно:)
x86-процессоры хранят такой дополнительный перенос в флаге переноса (CF), который можно проверить с помощью определенных инструкций.