Работа в Word
<<  Управляющие элементы Элементы комбинаторики  >>
Курс: Элементы компьютерной математики
Курс: Элементы компьютерной математики
Лекция №8
Лекция №8
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Умножение и деление чисел с фиксированной запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Операции с плавающей запятой
Поскольку мантиссы представлены в прямом коде, делятся их модули: |mх|
Поскольку мантиссы представлены в прямом коде, делятся их модули: |mх|
Операции с плавающей запятой
Операции с плавающей запятой
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Десятичные операции
Лекция окончена
Лекция окончена

Презентация: «Элементы компьютерной математики». Автор: Lena. Файл: «Элементы компьютерной математики.ppt». Размер zip-архива: 195 КБ.

Элементы компьютерной математики

содержание презентации «Элементы компьютерной математики.ppt»
СлайдТекст
1 Курс: Элементы компьютерной математики

Курс: Элементы компьютерной математики

Лектор – Склярова Елена Александровна

2 Лекция №8

Лекция №8

Тема: Элементы компьютерной математики (ЭКМ)

III. Элементы машинной арифметики Коды для представления чисел со знаком Формы представления чисел Диапазон и точность представления чисел Сложение и вычитание чисел с фиксированной запятой Умножение и деление чисел с фиксированной запятой Операции с плавающей запятой Десятичные операции

3 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

Основные способы умножения чисел с фиксированной запятой: умножение модулей; умножение дополнительных кодов. При этом первый способ обычно связан с дробными числами (классическая фиксированная запятая), а второй - с целыми. Второй способ в общем случае требует коррекции предварительного результата. Произведение Z имеет формат удвоенной длины по сравнению с длиной формата множимого X и множителя Y.

4 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

При умножении дробных чисел все форматы (X. Y, Z) одинаковы. Первичное произведение содержит удвоенное количество цифровых разрядов (2n, например, против «n» у X, Y). Старший из отбрасываемых цифровых разрядов предварительного произведения может быть использован для окружении результата. Знак результата при умножении дополнительных кодов получается автоматически, а при умножении модулей определяется по известной формуле: Зн Z = Зн X ? Зн Y.

5 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

Умножение обычно ведется начиная с младших разрядов множителя. Накапливаемая сумма частичных произведений (ЧП) сдвигается при этом вправо. Х = 7 * 2-3 = 0,1112 * Y = 5 * 2-3 = 0, 1012 ________________ Z = 35 * 2-6 = 0, 1000 112 ? 0.1002 0, 111 * 0, 101 _____ 111 ЧП1 000 ЧП2 111 ЧП3 0,100011

6 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

Ошибка представления результата в нашем примере не должна превышать по абсолютной величине значения 2-4 =1 / 16 = 0,063 0,1002 = 4 * 2-3 =1 /2 = 0,500 35 * 2-6 = 35 / 64 ? 0,547 0,547 - 0,500 = 0,047 < 0,063

7 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

Факторы ускорения умножения: обработка на каждом шаге циклического процесса умножения сразу нескольких разрядов множителя (q = 2,4, ...); однократные вычисления кратных множимого (X или ?X?), используемых при формировании очередного частичного произ­ведения, и хранение их в локальной (быстрой, регистровой) памяти; сокращение количества используемых на текущем шаге кратных множимого (и, значит, внутришаговых операций типа сложения) за счет выполнения не только сложения, но и вычитания этих кратных; аппаратное ускорение за счет привлечения комбинационных умножителей.

8 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

В какой-то степени факторы 1 и 3 реализуются в алгоритме ускоренного умножения. Здесь в составе множителя Y выделяются сплошные группы двоичных единиц. Каждая такая группа может быть представлена разностью: 1 … 12 = 10 … 02 – 1 ??? ??? n n

9 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

Тогда при прохождении разрядов множителя справа налево и попадании на такую группу единиц выполняется сначала вычитание (–Y), затем ничего не делается (кроме сдвига суммы ЧП), а при выходе из группы (попадании на 0) – сложение (+ Y). Например, в случае Y = 01 0111 011112 имеются 3 группы единиц и, соответственно, всего 6 результативных шагов + – Y (вместо 4 + 3 + 1 = 8): + – + – + – 0 1 0111 01111

10 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

Аналогично умножению выделяются такие способы деления чисел с фиксированной запятой: деление модулей; деление дополнительных кодов. Первый способ обычно используют для дробных чисел, второй – для целых. Второй способ в общем случае требует коррекции предварительного результата. Результат здесь двойной – частное Z и последний остаток R (он должен иметь знак делимого X). Форматы операнда Y и результатов Z, R одинаковы, а формат делимого X имеет удвоенную длину.

11 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

Знак результата Z при делении дополнительных кодов получается автоматически, а при делении модулей определяется по формуле: 3н Z = Зн X ? 3н Y (как и при умножении модулей).

12 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

Способы деления можно классифицировать еще по 3 признакам: с восстановлением или без восстановления остатка; с использованием обратного или дополнительного кода; с расширением или без расширения разрядной сетки.

13 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

Рассмотрим деление дробных чисел (модулей их) на примере: Х = 0, 01112 = 7 / 16 Y = 0, 10112 = 11 / 16 Z = 7 / 11 ? 0,636

14 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

Сначала покажем обычное, естественное деление двоичных чисел (вычитание-сдвиг, без восстановления остатка). 0,01110 0,1011 – 1011 0,1010 1100 разряд для округления – 1011 100 Таким образом, Z = 0,10102 =10 /16 = 5/8 = 0,625. Получаемая ошибка составляет 0,636 – 0,625 = 0, 011, в то время как она могла достигать значения 2–5 = 1/32 ? 0,031.

15 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

Пример 1. Деление с использованием дополнительного кода, с восстановлением остатка и с расширением разрядной сетки. 0, 0111 0, 1011 (–0,10112)доп = 1,01012 + 1, 0101 0, 1010 0 *1, 1100 Шаг 1 + 0, 1011 0, 0111 Шаг 2 (восстановление остатка) 0, 01110 (расширение разрядной сетки) + 1, 10101 (вычитание сдвинутого вправо ?Y?) *0, 00011 Шаг 3 0, 000110 (расширение PC) + 1, 110101 *1, 111011 Шаг 4 + 0, 001011 0, 000110 Шаг 5 (восстановление остатка) 0, 0001100 (расширение PC) + 1, 1110101 *0, 0000001 Шаг 6 0, 00000010 (расширение PC) + 1, 11110101 *1, 11110111 Шаг 7 + 0, 00001011 0, 00000010 Шаг 8 (восстановление остатка) 0, 000000100 (расширение PC) + 1, 111110101 *1, 111111001 Шаг 9

16 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

Пример 2. Деление с использованием дополнительного кода, с восстановлением остатка и без расширения разрядной сетки. Здесь вместо расширения разрядной сетки и сдвига делителя вправо осуществляется «формальный» сдвиг остатка влево. 0, 0111 0,1011 + 1, 0101 0,1010 0 *1, 1100 Шаг 1 + 0, 1011 0, 0111 Шаг 2 (восстановление) 0, 1110 (сдвиг влево) + 1, 0101 *0, 0011 Шаг 3 0, 0110 (сдвиг влево) + 1, 0101 * 1, 1011 Шаг 4 + 0, 1011 0, 0110 Шаг 5 (восстановление) 0, 0110 (сдвиг влево) + 1, 0101 *0, 0001 Шаг 6 0, 0010 (сдвиг влево) 1, 0101 *1, 0111 Шаг 7 + 0, 1011 0, 0010 Шаг 8 (восстановление) 0, 0100 (сдвиг влево) + 1, 0101 *1, 1001 Шаг 9

17 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

Пример 3. Деление с использованием дополнительного кода, без восстановления остатка и без расширения разрядной сетки. Этот способ доставляет ускорение – количество шагов в точности равно количеству вычисляемых цифр частного. Остаток не восстанавливается, даже если он отрицательный, но формально сдвигается влево – в начале следующего шага. И характер действия на этом шаге, как и ранее цифра частного, определяется инверсно по отношению к знаку остатка до сдвига – сложение, если знак остатка был 1, вычитание, т. е. (– | Y | )доп, если знак остатка был 0. 0, 0111 0, 1011 + 1, 0101 0, 1010 0 *1, 1100 Шаг 1 1, 1000 + 0, 1011 *0, 0011 Шаг 2 0, 0110 + 1, 0101 *1, 1011 Шаг 3 1, 0110 + 0, 1011 *0, 0001 Шаг 4 0, 0010 + 1, 0101 *1, 0111 Шаг 5 0, 1110 + 0, 1011 *1, 1001 Шаг 6

18 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

Пример 4. Деление с использованием обратного кода, с восстановлением остатка и с расширением разрядной сетки. 0, 0111 0, 1011 (–0, 10112)обр = 1,01002 + 1, 0100 0, 1010 0 *1, 1011 Шаг 1 + 0, 1011 0, 0111 Шаг 2 (восстановление) 0, 01110 (расширение PC) + 1, 10100 *0, 00011 Шаг З 0, 000110 (расширение PC) + 1, 110100 *1, 111010 Шаг 4 + 0, 001011 0, 000110 Шаг 5 (восстановление) 0, 0001100 (расширение PC) + 1, 1110100 *0, 0000001 Шаг 6 0, 00000010 (расширение PC) + 1, 11110100 *1, 11110110 Шаг 7 + 0, 00001011 0, 00000010 Шаг 8 (восстановление) 0, 000000100 (расширение PC) + 1, 111110100 *1, 111111000 Шаг 9

19 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

Пример 5. Деление с использованием обратного кода, с восстановлением остатка и без расширения разрядной сетки. Здесь положительный (возможно восстановленный) остаток сдвигается влево с циклическим переносом. 0, 0111 0,1011 + 1, 0100 0,1010 0 *1, 1011 Шаг 1 + 0, 1011 0, 0111 Шаг 2 (восстановление) 0, 1110 (сдвиг) + 1, 0100 *0, 0011 Шаг 3 0, 0110 (сдвиг) + 1, 0100 *1, 1010 Шаг 4 + 0, 1011 0, 0110 Шаг 5 (восстановление) 0, 1100 (сдвиг) + 1, 0100 *0, 0001 Шаг 6 0, 0010 (сдвиг) + 1, 0100 *1, 0110 Шаг 7 + 0, 1011 0, 0010 Шаг 8 (восстановление) 0, 0100 (сдвиг) + 1, 0100 *1, 1000 Шаг 9

20 Умножение и деление чисел с фиксированной запятой

Умножение и деление чисел с фиксированной запятой

Пример 6. Деление с использованием обратного кода без восстановления остатка и без расширения разрядной сетки. 0, 0111 0, 1011 + 1, 0100 0, 1010 0 *1, 1011 Шаг 1 1, 0111 + 0, 1011 *0, 0011 Шаг 2 + 0, 0110 1, 0100 *1, 1010 Шаг 3 1, 0101 + 0, 1011 *0, 0001 Шаг 4 0, 0010 + 1, 0100 *1, 0110 Шаг 5 0, 1101 + 1, 1011 *1, 1000 Шаг 6

21 Операции с плавающей запятой

Операции с плавающей запятой

Вычитание с плавающей запятой, так же как и с фиксированной, сводится обычно к сложению: X – Y = X + (–Y). Этапы выполнения операции сложения с плавающей запятой: выравнивание порядков (характеристик); сложение мантисс; нормализация; округление.

22 Операции с плавающей запятой

Операции с плавающей запятой

На первом этапе определяется разность порядков (характеристик): DP = рX – рY = НX – НY Операнд с меньшим порядком (X, если DP < 0; Y, DP > 0) приводится к большему порядку (характеристике). Мантисса этого операнда сдвигается вправо на | DP | = | DH | разрядов, т.е. операнд денормализуется и в общем случае теряет точность. Больший порядок и есть PZперв (первичный порядок). Мантиссы слагаемых представлены в прямом коде, поэтому в случае их одинаковых знаков суммируются модули мантисс: mZперв ?= ?mX? + ?mY?. Знак сохраняется. Если операнды имеют разные знаки, прибегают к дополнительному коду.

23 Операции с плавающей запятой

Операции с плавающей запятой

Условие нормализованности первичной двоичной мантиссы: 0,12 ? ?mZперв ?< 1. Если не выполнено левое неравенство, мантисса денорматизована «вправо», т.е. ее старшая двоичная цифра – нуль. Устранение нарушения нормализации вправо проводится путем сдвига первичной мантиссы влево, каждый раз на 1 двоичный разряд, до тех пор, пока в старшем цифровом ее разряде не окажется 1. Характеристика (порядок) при этом должна уменьшаться каждый раз на 1. Может оказаться, что характеристика уже достигла минимального, т.е. нулевого значения, а мантисса еще не нормализована. Это – особый случай исчезновения порядка (ИСП). Программное прерывание по ИСП может быть замаскировано (проигнорировано).

24 Операции с плавающей запятой

Операции с плавающей запятой

Также маскируется особый случай потери значимости (ПЗН). Здесь первичная мантисса равна нулю. В формате результата Z устанавливаются все нули (это одновременно и полный, и нормализованный нуль). Другой случай денормализации – влево: ?mZперв ?? 1. Это переполнение мантиссы. Делается попытка сдвига ее на один двоичный разряд вправо. Характеристика при этом должна увеличиться на 1. Однако, если она имеет уже максимальное значение (в формате рис. 2 – это 111 11112 = 127), увеличение ее невозможно. Фиксируется немаскируемый особый случай переполнения порядка с плавающей запятой (ППП).

25 Операции с плавающей запятой

Операции с плавающей запятой

Теперь можно, наконец, установить причину перехода в современных ЭВМ от порядка к характеристике. Она связана с понятием нормализованного нуля: 0норм = 0,0 … 0 * 2–p max Дело в том, что при сложении без предварительного анализа операндов на нуль использование полного нуля 0норм = 0,0 … 0 * 20 может приводить к грубым ошибкам.

26 Операции с плавающей запятой

Операции с плавающей запятой

Например, Х = 0,11102 * 2–3, Y = 0,00002 * 20. После выравнивания порядков X = 0,00012 * 20 (сдвиг мантиссы X вправо на 3 разряда). Zперв = X + Y = 0,00012 * 20 , Z = 0,10002 * 2–3. В результате получается серьезная ошибка: DZ = Z – Zточн = – 0,01102 * 2–3 ~ 40 % . Использование же нормализованного нуля Y = 0,0000 * 2–р max (в примере –рmax = – 10002) ошибку аннулирует. Итак, переход от р к Н приводит к совпадению кодов полного и нормализованного нулей (–рmax соответствует Н = 0 ... 0).

27 Операции с плавающей запятой

Операции с плавающей запятой

Этапы выполнения операции умножения с плавающей запятой: анализ операндов на нуль; сложение порядков (характеристик); умножение мантисс; нормализация; округление.

28 Операции с плавающей запятой

Операции с плавающей запятой

Анализ значений операндов X, Y на нуль при умножении в отличие от сложения имеет смысл, поскольку умножение – относительно длительная операция («длинная» команда). В случае X = 0 и/или Y = 0 сразу формируется результат Z (нормализованный нуль, ПЗН). Первичная характеристика произведения получается в соответствии с формулой НZперв = НХ + НY – 64, здесь 64 – смешение характеристики относительно порядка в формате рис. 2. Формула для характеристик следует из формулы для порядков: PZперв = РХ + PY = (HX – 64) + (HY – 64) = = HX + HY – 128 = HZперв – 64.

29 Операции с плавающей запятой

Операции с плавающей запятой

Диапазон значений первичной характеристики: (0 + 0 – 64) = – 64 ... (127 + 127 – 64) = 190. При этом поддиапазон –64 ... –1 сразу означает потерю значимости (ПЗН и Z, равное нормализованному нулю), поддиапазон 128 ... 190 – переполнение порядка с плавающей запятой (ППП). Умножение далее не производится. Поскольку мантиссы X, Y представлены в прямом коде, умножаются их модули. Знак произведения определяется в конце операции: Зн Z = Зн X ? Зн Y.

30 Операции с плавающей запятой

Операции с плавающей запятой

Методы умножения мантисс, в том числе и ускоренные, вполне аналогичны используемым для чисел с фиксированной запятой (дробных). Первичная мантисса Z может быть ненормализованная, но только вправо, поскольку модули мантисс имеют значения, меньшие 1. Денормализация вправо для случая нормализованных операндов незначительная: ?mX? = 0,10 … 02 ?mY? = 0,10 … 02 ________________________ ?mZ перв? = 0,010 … 02

31 Операции с плавающей запятой

Операции с плавающей запятой

Таким образом, здесь достаточно сдвига первичной мантиссы произведения влево на 1 двоичный разряд. Характеристика должна уменьшиться на 1. Если она уже нулевая, фиксируется исчезновение порядка (ИСП). При делении с плавающей запятой результат представлен только частным Z (в отличие от целого деления).

32 Операции с плавающей запятой

Операции с плавающей запятой

Этапы выполнения операции деления: анализ операндов на нуль; вычитание порядков (характеристик); деление мантисс; нормализация; округление. При mY = 0 происходит немаскируемое программное прерывание ДПЗ («Деление с плавающей запятой некорректно»). Если mY ? 0, а mХ = 0, фиксируется потеря значимости (ПЗН, результат Z нормализованный нуль).

33 Операции с плавающей запятой

Операции с плавающей запятой

Первичная характеристика частного НZперв = Нх - Hу + 64 вычисляется в соответствии с вычитанием двоичных порядков: рZперв = pх – py = (Нх - 64) – (Hу - 64) = Нх - Hу = = НZперв - 64 Диапазон значений первичной характеристики: (0 - 127 + 64) = - 63 ... (127 - 0 + 64) = 191. Поддиапазон - 63... - 1 сразу означает потерю значимости (ПЗН), поддиапазон 128... 191 - переполнение порядка с плавающей запятой (ПИН). Деление далее не производится.

34 Поскольку мантиссы представлены в прямом коде, делятся их модули: |mх|

Поскольку мантиссы представлены в прямом коде, делятся их модули: |mх|

на |mv|. Знак частного определяется в конце операции: Зн Z = Зн X ? Зн Y. Деление осуществляется, как правило, по методу без восстановления остатка Первичная мантисса результата может быть денормализована только влево.

Операции с плавающей запятой

35 Операции с плавающей запятой

Операции с плавающей запятой

Действительно, при нормализованных mх и mу минимальное значение |mz| больше 1/2: |mX| = 0,10...02 |mY| = 0,1 ... 12 _____________ |mZперв| > 0.12 Денормализация влево незначительна: |mX| = 0,1 ... 12 |mY| = 0,10 ... 02 _____________ |mZперв| = 1,1 … 12 Таким образом, здесь достаточно сдвига первичной мантиссы частного вправо на один двоичный разряд. Характеристика должна увеличиться на 1. Если она уже максимальная, т.е. 111 11112 = 127 (рис. 2), фиксируется переполнение порядка с плавающей запятой (ППП).

36 Десятичные операции

Десятичные операции

Хранимые в оперативной памяти ЭВМ (прямой код, целые) десятичные операнды X, Y могут размешаться в ней с перекрытием, однако при условии совпадения младших, знаковых тетрад (рис. 3 б), т. е. при условии выравненности «справа». Производится контроль всех цифровых и знаковых тетрад операндов. Любая ошибка здесь фатальна и ведет к немаскируемому программному прерыванию НДД («Некорректность десятичных данных»). Результат операции Z (а при делении, кроме частного Z, еще и остаток R) размешается на месте первого операнда, т.е X. Если длина этого операнда недостаточна, фиксируется программное прерывание ДПП («Десятичное переполнение»), которое может маскироваться. Выход из положения - путем добавления в X левых незначащих нулей (нулевых байтов).

37 Десятичные операции

Десятичные операции

Для представления десятичных чисел обычно используется естественная двоично-кодированная десятичная система счисления 8421 (в этой аббревиатуре указаны веса четырех двоичных разрядов тетрады-декады, представляющих собой одну десятичную цифру). Существует множество двоично-кодированных десятичных систем, например система «с избытком 3», 5211, 2421 и др. (табл. 2). Таблица 3.2 Двоично-кодированные десятичные системы (см.далее)

38 Десятичные операции

Десятичные операции

Таблица 2 Двоично-кодированные десятичные системы

Цифра

8421

С избытком З

5211

2421

0

0000

0011

0000

0000

1

0001

0100

0001

0001

2

0010

0101

0011

0010

3

0011

0110

0101

0011

4

0100

0111

0111

0100

5

0101

1000

1000

1011

6

0110

1001

1010

1100

7

0111

1010

1100

1101

8

1000

1011

1110

1110

9

1001

1100

1111

1111

39 Десятичные операции

Десятичные операции

Системы, представленные в табл.2, за исключением системы 8421 самодополняющиеся. Это означает, что дополнение любой цифры до 9 можно выполнить путем простой двоичной инверсии ее кода, например 4 ~ 0111 (с избытком 3) переходит в 5 ~ 1000 - и наоборот. А дополнение до 9 требуется при переходе от прямого кода отрицательного десятичного числа к его обратному коду (и далее – к дополнительному, прибавляя 1 в младшем разряде). Иначе говоря, простым делается двоично-десятичное сложение десятичных чисел со зна­ком. Кстати, представление в системах 5211 и 2421 неоднозначно и надо следить за тем, чтобы коды, симметричные относительно «линии раздела» 4-5, были взаимно инверсные.

40 Десятичные операции

Десятичные операции

Если целые десятичные числа представлены в прямом коде, при сложении операндов с одинаковыми знаками суммируются их модули, а результату присваивается общий знак операндов. В случае разнознаковых операндов обычно используется дополнительный код. Двойная десятичная коррекция осуществляется в начале операции сложения и в конце ее. Первая коррекция выполняется по правилу «+6» в каждой тетраде, при этом межтетрадные переносы появиться не могут: 10012 + 01102 __________ 11112

41 Десятичные операции

Десятичные операции

Вторая, заключительная коррекция, по правилу «–6» (–6)доп = (–0110)2 доп,без знака = 10102, производится только для тетрад, сформировавшихся без выходного переноса. Действительно, при сложении тетрад, с учетом входного переноса, сумма получается в диапазоне (0 + 0 + 0) ... (9 + 9 + 1), т.е. 0 … 19. Значение суммы в поддиапазоне 0 ... 9 корректно (двоичное и двоично-десятичное представления совпадают). Некорректность 10 ... 19 соответствует двум поддиапазонам: 10 ... 15 (10102 ...11112) и 16 ... 19 (1 00002 ... 1 00112), причем только в первом из них выходной межтетрадный перенос (МТП) отсутствует, а во втором он есть.

42 Десятичные операции

Десятичные операции

Первая десятичная коррекция сдвигает поддиапазон (+6) так, что теперь и первый некорректный поддиапазон получается с МТП: 16 … 21 (1 0002 ...1 01012). При этом вторая коррекция для обоих некорректных поддиапазонов не делается, двоично-десятичное кодирование уже корректно: 10 … 19 ~ 10002–10 … 1 10012–10. И, напротив, вторая коррекция нужна в корректном диапазоне 0 ... 9 – для компенсации первой коррекции (+ 6 – 6 = 0): 0 … 9 ~ 0002 … 10012 + 6 ~ 01102 … 11112. Вычитание значения 6 возвращает правильное двоично-десятичное представление (совпадающее с двоичным).

43 Десятичные операции

Десятичные операции

Особенностями второй коррекции являются параллель­ность выполнения се во всех корректируемых тетрадах и необходимость блокирования (запрещения) межтетрадных переносов, т.е. изоляции тетрад. Пример 1. Х = 43 = 0100 00112–10 + Y = 21 = 0010 00012–10 ______________________________ Z = 64 = 0110 0111 2–10 0100 0011 X + 0110 0110 Первая коррекция (+6) _____________ 1010 1001 + 0010 0001 +Y __________________ 1100* 1010* Обе тетрады без МТП (*) + + 1010 1010 Вторая коррекция (–6) _______________ 0110 0100 Z

44 Десятичные операции

Десятичные операции

В случае разно знаковых операндов первая коррекция выполняется неявно (скрытно). Код отрицательного операнда подвергается двоичной инверсии на пути к дополнительному беззнаковому коду, где еще требуется +1 в младшем разряде. Так «убиваются два зайца» –десятичная инверсия (дополнение в каждой тетраде до 9) и коррекция «+6». Действительно, двоичная инверсия – дополнение до 11112 = 15, а это и есть 9 + 6. Пример 2. Х = 43 = 0100 00112–10 + Y = – 21 = – 0010 00012–10 ~ (доп) 0111 10012–10 ______________________________ Z = 22 = 0010 00102–10 0100 0011 X + 1101 1110 Y, двоичная инверсия 1 Переход к дополнительному коду ________________ 0010 0010 Обе тетрады – с МТП, рвых = 1 : Z ? 0. Вторая коррекция не требуется.

45 Десятичные операции

Десятичные операции

Пример 3. Х = –43 = –0100 00112–10 ~ (доп) 0101 0111 2–10 + Y = 21 = – 0010 00012–10 ______________________________ Z = –22 = –0010 00102–10 ~ (доп) 0111 1000 2–10 1011 1100 X, двоичная инверсия + 1 Переход к дополнительному коду 0010 0001 Y 1101* 1110* Обе тетрады – без МТП, рвых = 0 : Z < 0. + + 1010 1010 0111 1000 Z: беззнаковый дополнительный код (нужен прямой код) 1000 0111 Сложение Z с нулем (вычитание ?Z?из 0). Z: двоичная инверсия + 1 0000 0000 1000* 1000* Обе тетрады - без МТП. + + 1010 1010 0010 0010 (–) Z в прямом беззнаковом коде

46 Десятичные операции

Десятичные операции

Если операнды и результат представлены в дополнительном коде, используется способ с одиночной коррекцией. Эта коррекция выполняется в конце операции – как вторая коррекция при двойной. Но выполняется она совершенно иначе. В отличие от второй коррекции здесь: коррекция не «–6», а «+6»; коррекция не параллельная, а последовательная, начиная с младшей тетрады; межтетрадные переносы не блокируются; тетрада корректируется не при отсутствии МТП, а при его наличии; дополнительное условие коррекции – некорректность тетрады (1010 ... 1111).

47 Десятичные операции

Десятичные операции

Пример 1. X = 43 = 0100 00112–10 Y = 21 = 0010 00012–10 ____________________________ Z = 64 = 0110 01002–10 0100 0011 X + 0010 0001 Y 0110 0100 Z Коррекция не требуется.

48 Десятичные операции

Десятичные операции

Пример 2. X = 43 = 0100 00112–10 Y = –21 = –0010 00012–10 ~ (доп) 0111 1001 2–10 ____________________________ Z = 22 = 0010 0010 2–10 0100 0011 X + 0111 1001 Y Дополнительный беззнаковый ________________________ 1011 1100* Младшая тетрада некорректна. + 0110 Коррекция __________________ 1100* 0010 Старшая тетрада некорректна. + 0110 Коррекция __________________ 0010 0010 Z; Z > 0 (есть выходной перенос).

49 Десятичные операции

Десятичные операции

Пример 3. Х = – 43 = –0100 00112–10 ~ (доп) 0101 0111 2–10 + Y = 21 = 0010 00012–10 ______________________________ Z = –22 = –0010 00102–10 ~ (доп) 0111 1000 2–10 0101 0111 + 0010 0001 ________________ 0111 1000 Zдоп б/знак; Z < 0 (нет выходного переноса).

50 Десятичные операции

Десятичные операции

Пример 4. Х = – 43 = – 0100 00112–10 ~ (доп) 0101 0111 2–10 + Y = – 21 = – 0010 00012–10 ~ (доп) 0111 1001 2–10 ______________________________ Z = – 64 = – 0110 01002–10 ~ (доп) 0011 0110 2–10 0101 0111 + 0111 1001 _______________ 1101 0000* Перенос из младшей тетрады. + 0110 Коррекция _________________ 1101* 0110 Старшая тетрада некорректна. + 0110 Коррекция __________________ 0011 0110 Zдоп б/знак

51 Лекция окончена

Лекция окончена

Нажмите клавишу <ESC> для выхода

«Элементы компьютерной математики»
http://900igr.net/prezentacija/informatika/elementy-kompjuternoj-matematiki-77373.html
cсылка на страницу
Урок

Информатика

130 тем
Слайды
900igr.net > Презентации по информатике > Работа в Word > Элементы компьютерной математики