Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Арифметические операции с числами в формате с плавающей запятой ⇐ ПредыдущаяСтр 5 из 5
Сложение и вычитание Производятся в несколько этапов: 1) Выравниваются порядки чисел в сторону большего (чтобы не получить мантиссы > 1) 2) Складываются мантиссы. Для представления отрицательных чисел используется модифицированный дополнительный код. Порядок суммы будет равен общему порядку слагаемых. 3) Нормализуется результат: порядок и мантисса изменяются так, чтобы первая значащая цифра результата попала в первый разряд после запятой.
Пример 1: Вычесть из числа A = 20.0 число B = 11.0. A = 20 = 101002 =.101 * 25 =.101 * 10101 (все числа –двоичные) B = 11 = 10112 =.1011 * 24 =.1011 * 10100 Процессор для определения разности порядков вычитает из порядка числа A порядок числа B и получает 1. Т.к. порядок числа A на единицу больше порядка числа B, порядок числа B увеличивается на 1 и мантисса при этом сдвигается на 1 разряд вправо относительно точки: B =.01011 * 10101 Мантисса числа B должна быть записана как отрицательное число (нужно выполнить вычитание): B = -010110…0 = 1|101001…1 = 1|101010…0 Обратный код Дополнительный Сложение мантисс в модифицированном дополнительном коде: 00| 1010 00…0 (число A) + 11| 1010 10…0 (число B) 1| 00| 0100 10…0 (сумма, порядок = 1012) Произошло нарушение нормализации. Нормализация результата: мантисса сдвигается влево, порядок уменьшается: A - B =.1001* 10100 = 10012 = 9.0
Пример 2: Сложить A = 5.0 и B = 28.0. A = 5 = 1012 =.101 * 25 =.101 * 1011 (все числа –двоичные) B = 28 = 111002 =.111 * 25 =.111 * 10101 Процессор для определения разности порядков вычитает из порядка числа A порядок числа B и получает -2. Т.к. порядок числа A на 2 меньше порядка числа B, порядок числа A увеличивается на 2 и мантисса при этом сдвигается на 2 разряда вправо относительно точки: A =.00101 * 10101 Сложение мантисс в модифицированном коде: 00| 0010 10…0 (число A) + 00| 1110 00…0 (число B) 01| 0000 10…0 (сумма, порядок = 1012)
Произошло нарушение нормализации. Нормализация результата: мантисса сдвигается вправо, порядок увеличивается: A + B =.100001* 10110 = 1000012 = 33.0
При сложении и вычитании чисел с плавающей запятой при сложении мантисс переполнение не фиксируется. Переполнение может возникнуть в процессе нормализации, если порядок превысит максимально допустимый.
Умножение и деление
При умножении чисел в формате с плавающей запятой порядки складываются, а мантиссы перемножаются, затем результат нормализуется. При делении из порядка делимого вычитается порядок делителя, а мантисса делимого делится на мантиссу делителя, затем результат нормализуется.
Двоично-десятичное кодирование информации
Двоично-десятичный код — ( binary-coded decimal [BCD] ) форма записи целых чисел, когда каждый десятичный разряд числа записывается в виде его четырёхбитного двоичного кода (вместо каждой десятичной цифры записывают ее двоичное значение). Например, десятичное число 310 будет записано в двоичном коде как 1001101102, а в двоично-десятичном коде как 0011 0001 0000BCD. Преимущества и недостатки Преимущества · Упрощён вывод чисел на индикацию — вместо последовательного деления на 10 требуется просто вывести на индикацию каждый полубайт. Аналогично, проще ввод данных с цифровой клавиатуры. · Для дробных чисел (как с фиксированной, так и с плавающей запятой) при переводе в человекочитаемый десятичный формат и наоборот не теряется точность. · Упрощены умножение и деление на 10, а также округление. По этим причинам двоично-десятичный формат применяется в калькуляторах — калькулятор в простейших арифметических операциях должен выводить в точности такой же результат, какой подсчитает человек на бумаге. Недостатки
Запрещённые в BCD битовые комбинации: 1010 1011 1100 1101 1110 1111
Пример операции сложения двоично-десятичных чисел: Требуется: Найти число A = D + C, где D = 3927, C = 4856 Решение: Представим числа D и C в двоично-десятичной форме: D = 3927 = 0011 1001 0010 0111 C = 4856 = 0100 1000 0101 0110 Суммируем числа D и С по правилам двоичной арифметики: * ** 0011 1001 0010 0111+ 0100 1000 0101 0110 ___________________= 1000 0001 0111 1101 - Двоичная сумма+ 0110 0110 - Коррекция ___________________ 1000 0111 1000 0011 '*' — тетрада, из которой был перенос в старшую тетраду '**' — тетрада с запрещённой комбинацией битов В тетраду, помеченую символом *, добавляем шестёрку т.к по правилам двоичной арифметики перенос унёс с coбой 16, а по правилам десятичной арифметики должен был унести 10. В тетраду, помеченую символом **, добавляем шестёрку, так как комбинация битов 1101 (что соответствует десятичному числу 13) является запрещённой.
Популярное:
|
Последнее изменение этой страницы: 2016-07-12; Просмотров: 1557; Нарушение авторского права страницы