Подтвердить что ты не робот

Вычитание большого двоичного числа без знака из меньшего

Я беру курс компьютерной организации и ассемблера. На письменной части нашей лаборатории на этой неделе есть вопрос, который меня озадачил. Вопрос гласит...

Вычесть следующие двоичные числа без знака (показать бит заимствования и переполнения). Не конвертируйте в два дополнения.

 0101 0111 1101
-1110 1011 0110
 --------------

Я понимаю, что ответ -1001 0011 1001, но мне трудно найти способ заимствовать, чтобы фактически выполнить это вычитание, взяв большее число и вычитая его из меньшего количества и показать мою работу. Вся моя жизнь при вычитании большого числа из небольшого числа я отменил проблему и вместо этого вычитал меньшее число из большего числа и добавил отрицательный знак перед результатом. Я спросил профессора, и он говорит, что он хочет решить проблему так, как она написана. Мне не разрешено это решать, вычитая меньшее число из большего числа и отрицая, как обычно. Я не смог найти примеры онлайн, чтобы вычесть большее двоичное число без знака из меньшего.

Я был бы очень признателен, если бы кто-нибудь мог описать мне, как выполнять вычитание в этом сценарии.

Обновление: @Alex верна. Профессор искал

0110 1100 0111 (1735)

Спасибо всем.

4b9b3361

Ответ 1

Вы делаете это точно так же, независимо от того, какое число больше и которое меньше.

 bb b      bb   <- borrows
 0101 0111 1101 (1405)
-1110 1011 0110 (3766)
 --------------
 0110 1100 0111 (1735?)

Теперь, если вам нужна правильная разница, вам нужно учитывать переполнение, поскольку приведенный выше результат не включает знаковый бит:

 b bb b      bb   <- borrows
 0 0101 0111 1101 (1405)
-0 1110 1011 0110 (3766)
 ----------------
 1 0110 1100 0111 (-2361 signed 2 complement)

Действительно, ЦПУ не заботится о том, что вычитается из чего. Он использует тот же алгоритм для целочисленного сложения/вычитания, причем этот алгоритм одинаковый для целых чисел без знака. Вам нужно только правильно интерпретировать результат и флаги переноса и переполнения. Это все.

Ответ 2

просто вычтите два двоичных числа, как они есть, затем возьмите 2 дополнения результата. вуаля!