Операция сложения чисел в прямом, обратном и дополнительном кодах выполняется на двоичных сумматорах соответствующего кода.
Двоичный сумматор прямого кода (ДСПК) – сумматор, в котором отсутствует цепь поразрядного переноса между старшим цифровым и знаковым разрядами, поэтому на ДСПК складываются числа, имеющие одинаковые знаки; сумма чисел имеет знак любого из слагаемых.
Двоичный сумматор дополнительного кода (ДСДК) – сумматор, оперирующий изображениями чисел в дополнительном коде и имеющий цепь поразрядного переноса из старшего цифрового в знаковый разряд. Правила сложения на ДСДК основаны на следующей теореме: сумма дополнительных кодов есть дополнительный код результата.
Двоичный сумматор обратного кода (ДСОК) – сумматор, оперирующий изображениями чисел в обратном коде и характеризующийся наличием цепи циклического переноса из знакового разряда в младший разряд числа. Правила сложения на ДСОК основаны на следующей теореме: сумма обратных кодов есть обратный код результата.
При сложении чисел одинакового знака, представленных в формате с фиксированной запятой, может возникнуть переполнение разрядной сетки. Признаком переполнения разрядной сетки ДСПК является появление единицы переноса из старшего разряда цифровой части числа. Признаком переполнения разрядной сетки ДСДК и ДСОК является знак результата, противоположный знаку операндов.
Умножение чисел, представленных в формате с фиксированной запятой, осуществляется на двоичных сумматорах прямого, обратного и дополнительного кодов.
Существует несколько методов получения произведения двух чисел, все они дают результаты одинаковой точности, но требуют различных аппаратных затрат.
Наиболее распространен метод, по которому произведение получается
по следующей схеме: A = 0, a1 a2 ... an – множимое, а B = 0, b1
b2 ...
bn = (... (((bn
x 2-1 + bn-1) x 2-1 + bn-2) x 2^-1 + ... b2) 2^-1 + b1) 2^-1 –
множитель, произведение равно С = A x B = (...((bn x 0.a1 ... an) 2-1 + bn-1
x 0.a1 a2 ... an) 2-1
+
... + b1 x 0.a1 a2 ... an) 2^-1,
что означает, что умножение начинается с младших разрядов множителя
и на каждом шаге сдвигается вправо сумма частных произведений.
При умножении чисел представленных в прямом коде, знак произведения определяется отдельно от цифровой части как SgC = SgA + SgB, а цифровая часть формируется на двоичном сумматоре прямого кода. Произведение получается в прямом коде.
При умножении чисел, представленных в дополнительном коде, одновременно получают знаковую и цифровую части произведения. Результат представляется в дополнительном коде только при положительном множителе; при отрицательном множителе для получения результата в дополнительном коде вводится коррекция в виде прибавления [А]д к произведению дополнительных кодов сомножителя.
При умножении чисел в обратном коде знаковая и цифровая части также получаются одновременно, знак формируется автоматически. Произведение обратных кодов дает обратный результат только при положительном множителе; при отрицательном множителе вводится две коррекции:
а) на первом шаге формирования произведения прибавлением поправки [A]об;
б) на последнем шаге прибавлением к содержимому сумматора [А]об.
При умножении чисел в прямом и дополнительном кодах результат имеет 2n разрядов, где n – число разрядов операндов, и может содержаться соответственно старшая часть произведения – в сумматоре и младшая часть – в освобождающихся разрядах регистра множителя.
При умножении чисел в обратном коде произведение получают сразу со знаком и длиной n разрядов, которые хранятся в сумматоре.
Деление двоичных чисел, представленных в формате с фиксированной запятой представляет последовательные операции алгебраического сложения делимого и делителя, а затем остатков и сдвига. Деление выполняется на двоичных сумматорах дополнительного и обратного кодов. Результат получается в прямом коде. Знаковую и цифровую часть частного получают в прямом коде. Знак частного
Sg С = Sg A "+" Sg B,
где "+" – операция сложения по mod 2; Sg A – знак делимого A; Sg B – знак делителя B.
Для определения цифр частного Ci используют следующие правила.
Правило 1. Если делимое A и делитель B представлены в соответствии с таблицей 1,
Таблица 1
Sg A |
+ |
+ |
- |
- |
Sg B |
+ |
- |
+ |
- |
представление операндов |
A+B |
A+B |
A+B |
A+B |
где В – изменение знака операнда на противоположный, то необходимо сравнивать на каждом шаге знаки делимого A и остатков Ai и принимать Ci = 1, если знаки совпали, и Ci = 0 – при несовпадении знаков A и Ai.
Правило 2. Если делимое A и делитель B представлены в соответствии с табл. 2, то в очередной разряд частного Ci переписывается содержимое знакового разряда сумматора на каждом шаге.
Таблица 2
Sg A |
+ |
+ |
- |
- |
Sg B |
+ |
- |
+ |
- |
представление операндов |
A+B |
A+B |
A+B |
A+B |
Необходимым условием выполнения операции деления чисел с фиксированной запятой является | A | < | B |, B != 0, в противном случае – переполнение разрядной сетки сумматора.
Для нахождения результата с точностью n разрядов надо найти (n+1)-й разряд
частного, а затем округлить результат.
Признаки окончания операции деления:
1) достижение заданной точности;
2) получение очередного остатка, равного нулю.