Вычитание большого двоичного числа без знака из меньшего
Я беру курс компьютерной организации и ассемблера. На письменной части нашей лаборатории на этой неделе есть вопрос, который меня озадачил. Вопрос гласит...
Вычесть следующие двоичные числа без знака (показать бит заимствования и переполнения). Не конвертируйте в два дополнения.
0101 0111 1101
-1110 1011 0110
--------------
Я понимаю, что ответ -1001 0011 1001, но мне трудно найти способ заимствовать, чтобы фактически выполнить это вычитание, взяв большее число и вычитая его из меньшего количества и показать мою работу. Вся моя жизнь при вычитании большого числа из небольшого числа я отменил проблему и вместо этого вычитал меньшее число из большего числа и добавил отрицательный знак перед результатом. Я спросил профессора, и он говорит, что он хочет решить проблему так, как она написана. Мне не разрешено это решать, вычитая меньшее число из большего числа и отрицая, как обычно. Я не смог найти примеры онлайн, чтобы вычесть большее двоичное число без знака из меньшего.
Я был бы очень признателен, если бы кто-нибудь мог описать мне, как выполнять вычитание в этом сценарии.
Обновление:
@Alex верна. Профессор искал
0110 1100 0111 (1735)
Спасибо всем.
Ответы
Ответ 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 дополнения результата. вуаля!