- •Основы представления информации в цифровых автоматах
- •Позиционные системы счисления
- •Для позиционной системы счисления справедливо равенство
- •Методы перевода чисел
- •Перевод чисел делением на основание новой системы
- •Табличный метод перевода
- •Форматы представления чисел с плавающей запятой
- •Знаковая часть
- •5. Двоичная арифметика
- •Коды: прямой, обратный, дополнительный, модифицированный
- •Выполнение арифметических операций с числами с фиксированной и плавающей запятой
-
Коды: прямой, обратный, дополнительный, модифицированный
Одним из способов выполнения операции вычитания является замена знака вычитаемого на противоположный и прибавление его к уменьшаемому:
A – B = A + (–B).
Этим операцию арифметического вычитания заменяют операцией алгебраического сложения. Последняя и становится основной операцией.
Для машинного представления отрицательных чисел используют коды прямой, дополнительный, обратный.
Прямой код числа A = – 0, a1 a2 ... an – машинное изображение этого числа в виде [A]пр = 1, a1 a2 ... an.
Из определения следует, что в прямом коде все цифровые разряды остаются неизменными, а в знаковой части записывается единица. Например, если A = – 0,101110, то [A]пр = 1,101110.
Положительное число в прямом коде не меняет своего изображения. Например, если A = 0,110101, то [A]пр = 0,110101.
Дополнительный код числа A = – 0, a1 a2 ... an – машинное изображение этого числа [A]д = 1, ā1 ā2 ... ān, для которого āi = 0, если ai = 1, и āi = 1, если ai = 0, за исключением последнего значащего разряда, для которого āk = 1 при ak = 1.
Например, число A = – 0,101110 запишется в дополнительном коде так: [A]д = 1,010010.
Дополнительный код является математическим дополнением до основания системы счисления:
| A | + [A]д = q,
где | A | – абсолютное значение числа A.
Обратный код числа A = – 0, a1 a2 ... an – такое машинное изображение этого числа [A]об = 1, å1 å 2 ... ån, для которого åi = 0, если ai = 1, и åi = 1, если ai = 0.
Из определения следует, что обратный код двоичного числа является инверсным изображением самого числа, в котором все разряды исходного числа принимают инверсное (обратное) значение, т. е. все нули заменяются на единицы, а все единицы – на нули, например если A = – 0,101110, то [A]об = 1,010001.
Следовательно, для обратного кода чисел, представленных в форме с запятой, фиксированной перед старшим разрядом, справедливо соотношение
| A | + [A]об = q – q-n,
где | A | – абсолютная величина числа A; n – количество разрядов после запятой в изображении числа.
-
Выполнение арифметических операций с числами с фиксированной и плавающей запятой
Операция сложения чисел в прямом, обратном и дополнительном кодах выполняется на двоичных сумматорах соответствующего кода.
Двоичный сумматор прямого кода (ДСПК) – суматор, в котором отсутствует цепь поразрядного переноса между старшим цифровым и знаковым разрядами, поэтому на ДСПК складываются числа, имеющие одинаковые знаки; сумма чисел имеет знак любого из слагаемых.
Двоичный сумматор дополнительного кода (ДСДК) – сумматор, оперирующий изображениями чисел в дополнительном коде и имеющий цепь поразрядного переноса из старшего цифрового в знаковый разряд. Правила сложения на ДСДК основаны на следующей теореме: сумма дополнительных кодов есть дополнительный код результата.
Двоичный сумматор обратного кода (ДСОК) – сумматор, оперирующий изображениями чисел в обратном коде и характеризующийся наличием цепи циклического переноса из знакового разряда в младший разряд числа. Правила сложения на ДСОК основаны на следующей теореме: сумма обратных кодов есть обратный код результата.
При сложении чисел одинакового знака, представленных в формате с фиксированной запятой, может возникнуть переполнение разрядной сетки. Признаком переполнения разрядной сетки ДСПК является появление единицы переноса из старшего разряда цифровой части числа. Признаком переполнения разрядной сетки ДСДК и ДСОК является знак результата, противоположный знаку операндов.
Умножение чисел, представленных в формате с фиксированной запятой, осуществляется на двоичных сумматорах прямого, обратного и дополнительного кодов.
Существует несколько методов получения произведения двух чисел, все они дают результаты одинаковой точности, но требуют различных аппаратных затрат.
Наиболее распространен метод, по которому произведение получается по следующей схеме: 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+ |
A+B |
A+B |
A+ |
где – изменение знака операнда на противоположный, то необходимо сравнивать на каждом шаге знаки делимого A и остатков Ai и принимать Ci = 1, если знаки совпали, и Ci = 0 – при несовпадении знаков A и Ai.
Правило 2. Если делимое A и делитель B представлены в соответствии с табл. 2, то в очередной разряд частного Ci переписывается содержимое знакового разряда сумматора на каждом шаге.
Таблица 2
Sg A |
+ |
+ |
– |
– |
Sg B |
+ |
– |
+ |
– |
представление операндов |
+ B |
+ |
A+B |
A+ |
Необходимым условием выполнения операции деления чисел с фиксированной запятой является | A | < | B |, B 0, в противном случае – переполнение разрядной сетки сумматора.
Для нахождения результата с точностью n разрядов надо найти (n+1)-й разряд частного, а затем округлить результат.
Признаки окончания операции деления:
-
достижение заданной точности;
получение очередного остатка, равного нулю.