Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Коды, применяемые для изображения отрицательных чисел.
Основное неудобство построения устройств, реализующих арифметические операции, состоит в сложном характере алгоритма вычитания. Для его преодоления в ЭВМ всегда операция выполняется по иным правилам, чем это делается обычно. В его основе лежит операция сложения. Алгоритмы выполнения такого рода операций требуют специальных кодов представления отрицательных чисел. Прямой код. Это естественное и наиболее привычное представление числа в следующем виде: знак: " + " соответствует 0 " - " соответствует 1 В цифровых разрядах пишется модуль положительного или отрицательного числа. [X]пк - обозначим таким образом изображение числа " X " в прямом коде. Рассмотрим диапазоны представляемых чисел: X+min = 0, 000....0 - изображение положительного нуля X+max = 0, 111....1 = 1 - 2-n X-min = 1, 111....1 = -(1-2-n) X-max = 1, 000....0 - изображение отрицательного нуля. Таким образом, нуль имеет двоякое изображение. Замечания: 1. перед выполнением операции вычитания чисел с одинаковыми знаками и сложения с разными, необходимо сравнить по модулю два кода и, если нужно, сделать перестановку кодов местами, затем можно выполнять собственно операцию вычитания кодов. 2. при выполнении операции умножения отдельно и независимо находятся модули произведений кодов, а знак находится как результат операции сложения по модулю два: 3. [X]пк * [Y]пк = sign Z. |Z| |Z| = |X|*|Y| Собственно умножение выполняется с применением микроопераций сложения и сдвига. 4. аналогично умножению выполняется операция деления с использованием микроопераций вычитания и сдвига. Вследствие ряда неудобств в ЭВМ операции вычитания, сложения чисел с разными знаками и деления в прямом коде практически не выполняются. Дополнительный код Дополнительным называется код, в котором для положительного числа в знаковом разряде пишется " 0", в цифровых - модуль числа, а для отрицательного в знаковом разряде пишется " 1", в цифровых - дополнение числа до единицы.
Если некоторое X- = -0, x1x2...xn нужно представить в дополнительном коде, то где: 1 - 0, x1x2...xn = 0, Z1Z2...Zn Диапазоны представленных чисел: Х+ min = 0, 0...0 - положительный нуль Х+ max = 0, 11...1 = 1-2-n - максимальное положительное число. X- min = 1, 11...1 = 2-2-n - минимальное отрицательное число X- max = 1, 0...0 - наибольшее(по модулю) отрицательное число Таким образом, нуль имеет единственное представление. В самом деле, так как X-X = [X+]дк + [X-]дк = 0, то в дополнительном коде: |X+| + 10 - |X-| = 10, если в разрядной сетке ЭВМ нет второго знакового разряда, то это переполнение теряется, и в знаковом разряде будет только нуль. Важная особенность в получении дополнительного кода отрицательного числа состоит в следующем: Таким образом, для записи дополнительного кода отрицательного числа необходимо в знаковом разряде поставить единицу, проинвертировать все цифровые разряды числа и прибавить единицу в младший разряд. Это также правило перевода из дополнительного кода в прямой код. Рассмотрим на примерах выполнение операции сложения двух чисел с разными знаками. Возможны следующие случаи: 1. X+ + Y+ = S+ 2. X+ + Y- = S+ 3. X+ + Y- = S- 4. X- + Y- = S- Необходимо помнить, что нельзя, выполняя операции, выходить за диапазон представляемых в данной разрядной сетке чисел, записанных с фиксированной запятой. Положим n = 3, 1 - знаковый разряд и 2 - цифровых. 1. X+ = 0, 10 2. Y+ = 0, 01 В дополнительном коде То есть, нет никаких особенностей. 3. X+ = 0, 10 4. Y- = -0, 01 В дополнительном коде Переполнение теряется и получается верный результат. 5. X+ = 0, 01 6. Y- = -0, 11 В дополнительном коде 7. X- = -0, 10 8. Y- = -0, 01 В дополнительном коде Возникающее переполнение теряется и общий результат отрицательный. Таким образом, важной особенностью дополнительного кода является то, что знаковый разряд в процессе выполнения операции рассматривается совместно с цифровыми. Возникающие переносы теряются и не влияют на результат операции.
|
Последнее изменение этой страницы: 2017-03-15; Просмотров: 283; Нарушение авторского права страницы