- •Системы счисления
- •Двоичная система счисления
- •Перевод чисел из одной системы счисления в другую
- •Перевод из 10-ой системы в 8-ую
- •Перевод из 10-ой системы в 16-ую
- •Перевод из 2-ой системы в 8-ю или 16-ю и обратно
- •Примеры двоичного кодирования информации
- •Кодирование чисел
- •Кодирование целых чисел
- •Диапазон значений знаковых чисел
- •Сложение и вычитание целых чисел
- •Умножение и деление
- •Кодирование вещественных чисел
- •Арифметические операции с числами в формате с плавающей запятой
- •Двоично-десятичное кодирование информации
- •Преимущества и недостатки Преимущества
- •Недостатки
Арифметические операции с числами в формате с плавающей запятой
Сложение и вычитание
Производятся в несколько этапов:
Выравниваются порядки чисел в сторону большего (чтобы не получить мантиссы > 1)
Складываются мантиссы. Для представления отрицательных чисел используется модифицированный дополнительный код. Порядок суммы будет равен общему порядку слагаемых.
Нормализуется результат: порядок и мантисса изменяются так, чтобы первая значащая цифра результата попала в первый разряд после запятой.
Пример 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.