Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзамену по информатике.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
276.25 Кб
Скачать

Сложение в дополнительных кодах

Случай 1. A и B — положительные числа.

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

Случай 2. А — положительное, а В — отрицательное, по модулю больше А.

В этом случае мы получим верный результат, но уже в дополнительном коде. Оно и логично, складываем-то мы в дополнительном 

Случай 3. A — положительное, а B — отрицательное, по модулю меньше A.

В случае с обратными кодами мы прибавляли лишнюю единицу к полученному коду. Здесь же нам придется ее просто отбрасывать. Давайте посмотрим:

−1310 = 1000 1101(ПК) = 1111 00102 (ОК) = 1111 00112 (ДК)

2310 = 0001 0111(ПК)

0000 1010— это уже 1010, а раз мы получили правильный ответ, то нам не нужна лишняя единица. Мы просто отбрасываем ее.

Случай 4. A и B — отрицательные.

Здесь у нас два отрицательных числа, и оба в дополнительном коде, то есть, по логике вещей, результат у нас итак должен получиться в дополнительном коде.. но ведь у нас еще и единица там дополнительная, помните? Давайте взглянем, что же получится:

−1310 = 1000 1101(ПК) = 1111 00102 (ОК) = 1111 00112 (ДК)

−2310 = 1001 0111(ПК) = 1110 10002 (ОК) = 1110 10012 (ДК)

Взглянем на число, не учитывая «лишнюю единицу»: 1101 11002 (ДК) = 1101 11012 (ОК) = 1010 00102 (ПК) = −3610. Заметили? И без единицы у нас снова получился правильный ответ, поэтому мы просто отбрасываем единицу, как и в предыдущем примере, и ничего более не делаем.

Пятый и шестой случаи — переполнение — для дополнительного кода аналогичны обратному.

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

Итог: Стоит запомнить, что во всех случаях, кроме особого (случай 4, дополнительный код), если у вас получается лишняя единица — вы прибавляете ее к остальной части числа. И не забывайте про то, что если результат у вас получается не того знака, который вы ожидали — это переполнение.

Вычитание

Любое вычитание сводится к сложению двух чисел, поэтому я не буду сейчас здесь разбирать все случаи подробно, а просто напишу про замену вычитания сложением.

Случай 1. A и B — положительные.

A – B = A + (−B)

В итоге получаем сложение мы заменяем на вычитание, остается только проверить, меньше или больше абсолютная величина (модуль) B, чем А, для того, чтобы выбрать правильный способ решения.

Случай 2. А — положительное,   B — отрицательное.

Не имеет значения, какое B по модулю, больше или меньше A.

A – (–B) = A + B

Это тот случай, при котором возможно переполнение. Значит, если вы получаете отрицательное число в этом случае — переполнение.

Случай 3. A — отрицательное, B — положительное.

–A – B = –A + (–B)

Получаем сложение двух отрицательных чисел. Это тоже случай, при котором возможно переполнение.

Случай 4. A и B — отрицательные числа.

Получаем ситуацию аналогичную первой:

–A – (–B) = –A + B

Смотрим на модули чисел A и B, и решаем, как именно будем вычислять.