Арифметические действия над целыми числами
Сложение и вычитание В большинстве компьютеров операция вычитания не используется. Вместо нее производится сложение уменьшаемого с обратным или дополнительным кодом вычитаемого. Это позволяет существенно упростить конструкцию АЛУ. При сложении обратных кодов чисел А и В имеют место четыре основных и два особых случая. Рассмотрим их.
СЛУЧАЙ 1 А и В положительные. При суммировании складываются все разряды, включая разряд знака. Так как знаковые разряды положительных слагаемых равны нулю, разряд знака суммы тоже равен нулю.
СЛУЧАЙ 2 А положительное, В отрицательное и по абсолютной величине больше, чем А. Обратный код -10 Обратный код -7 При переводе в прямой код биты цифровой части результата инвертируются: 1 0000111 = -710
А положительное, В отрицательное и по абсолютной величине меньше, чем А. Обратный код -3 Компьютер исправляет полученный первоначально неправильный результат (6 вместо 7) переносом единицы из знакового разряда в младший разряд суммы.
А и В отрицательные. Обратный код -3 Обратный код -7 Обратный код -10 Полученный первоначально неправильный результат компьютер исправляет переносом единицы из знакового разряда в младший разряд суммы. При переводе результата в прямой код биты цифровой части числа инвертируются: 1 0001010 = -1010.
А и В положительные, А + В ≥ 2n-1, где n – количество разрядов формата чисел. Переполнение Семи разрядов цифровой части числового формата недостаточно для размещения восьмиразрядной суммы (16210 = 101000102), поэтому старший разряд суммы оказывается в знаковом разряде. Это вызывает несовпадение знака суммы и знаков слагаемых, что является свидетельством переполнения разрядной сетки.
А и В отрицательные, |А| + |В| ≥ 2n-1 (для однобайтового формата n = 8, 2n-1 = 27 = 128). Обратный код -63 Обратный код -95 Переполнение Здесь знак суммы тоже не совпадает со знаками слагаемых, что свидетельствует о переполнении разрядной сетки.
Все рассмотренные случаи имеют место и при сложении дополнительных кодов чисел. А и В положительные. Здесь нет отличий от случая 1, рассмотренного для обратного кода.
А положительное, В отрицательное и по абсолютной величине больше, чем А. Дополнительный код -10 Дополнительный код -7 При переводе в прямой код биты цифровой части результата инвертируются и к младшему разряду прибавляется единица: 1 0000110 + 1 = 1 0000111 = -710.
А положительное, В отрицательное и по абсолютной величине меньше, чем А. Перенос отбрасывается Дополнительный код -3 Единицу переноса из знакового разряда компьютер отбрасывает.
А и В отрицательные. Перенос отбрасывается Дополнительный код -3 Дополнительный код -7 Дополнительный код -10 Единицу переноса из знакового разряда компьютер отбрасывает. Случаи переполнения для дополнительных кодов рассматриваются по аналогии со случаями 5 и 6 для обратных кодов.
Задания Выполните вычитания чисел путем сложения их обратных (дополнительных) кодов в формате 1 байт. Укажите, в каких случаях имеет место переполнение разрядной сетки:
Умножение и деление Во многих компьютерах умножение производится как последовательность сложений и сдвигов. Для этого в АЛУ имеется регистр, называемый накапливающим сумматором, который до начала выполнения операции в нем поочередно размещаются множимое и результаты промежуточных сложений, а по завершении операции – окончательный результат. Другой регистр АЛУ, участвующий в выполнении этой операции, вначале содержит множитель. Затем по мере выполнения сложений содержащееся в нем число уменьшается, пока не достигнет нулевого значения. Умножим 1100112 на 1011012.
Пример
Деление для компьютера является трудной операцией. Обычно оно реализуется путем многократного прибавления к делимому дополнительного кода делителя. Задания