- •Раздел 2 принципы построения и функционирования эвм и вычислительных систем (вс)
- •2.1. Структура эвм
- •2.2. Системы счисления
- •2.3. Формы представления чисел
- •2.3.1. Форма представления чисел с фиксированной точкой
- •2.3.2. Форма представления чисел с плавающей точкой
- •2.3.3. Форматы двоично-десятичных чисел
- •2.3. Машинные коды
- •2.3.1. Прямой код
- •2.3.2. Обратный код
- •2.3.3. Дополнительный код
- •2.4. Перевод чисел из одной системы представления в другую
- •2.4.1. Перевод между основаниями, составляющими степень двойки
- •2.4.2. Перевод целого числа из десятичного счисления в другое
- •2.4.3. Перевод дробного числа из десятичного счисления в другое
- •2.4.4. Перевод чисел в десятичную систему счисления
- •2.5. Арифметические действия над двоичными числами
- •2.5.1. Сложение
- •2.5.2. Вычитание
- •2.5.3. Умножение
- •2.5.4. Деление
- •2.6. Понятие алгебры логики
- •2.7. Простейшие логические функции
- •2.7.1. Логическая операция конъюнкция (логическое умножение)
- •2.7.2. Логическая операция дизъюнкция (логическое сложение)
- •2.7.3. Логическая операция инверсия (отрицание)
- •2.7.4. Логическая операция сложение по модулю 2
- •2.7.5. Логическая операция эквивалентность (функция тождества)
- •2.7.6. Логическая операция импликация (логическое следование)
- •2.7.7. Функция Шеффера
- •2.7.8. Стрелка Пирса ав, или функция Вебба a b
- •2.8. Основные правила преобразования формул
- •2.9. Кодирование текстовой информации
- •2.10. Составные части компьютера
- •2.11. Логические элементы
- •2.12. Триггеры
- •2.12.1. Общие сведения о триггерах
- •2.12.2. Асинхронный rs-триггер
- •2.12.3. Синхронный rs-триггер
- •2.12.3. Двухтактный rs-триггер
- •2.12.4. Асинхронный и синхронный d-триггеры
- •2.12.5. T-триггер
- •2.12.6. Jk-триггер
- •2.13. Типовые узлы комбинационного типа
- •2.13.1. Дешифраторы
- •2.13.2. Одноразрядный сумматор
- •2.13.3. Полусумматор
- •2.13.4. Многоразрядные сумматоры
- •2.13.5. Двоично-десятичные сумматоры
- •2.13.6. Мультиплексоры
- •2.13.7. Демультиплексоры
- •2.14. Типовые узлы накапливающего типа
- •2.14.1. Регистры
- •2.14.2. Счетчики
- •2.14.3. Двоично-десятичные счетчики
- •2.15. Классификация архитектур системы команд
- •2.15.1. Классификация по составу и сложности команд
- •2.15.2. Классификация по месту хранения операндов
- •2.15.3. Стековая архитектура
- •2.15.4. Аккумуляторная архитектура
- •2.15.5. Регистровая архитектура
- •2.15.6. Архитектура с выделенным доступом к памяти
- •2.16. Типы команд
- •2.16.1. Команды пересылки данных
- •2.16.2. Команды арифметической и логической обработки
- •2.16.3. Операции с целыми числами
- •2.16.4. Операции с числами в форме с плавающей запятой
- •2.16.5. Логические операции
- •2.16.6. Операции сдвигов
- •2.16.7. Операции с десятичными числами
- •2.16.8. Simd-команды
- •2.16.9. Команды для работы со строками
- •2.16.10. Команды преобразования
- •2.16.11. Команды ввода/вывода
- •2.16.12. Команды управления системой
- •2.16.13. Команды управления потоком команд
- •2.17. Формат команд
- •2.17.1. Длина команды
- •2.17.2. Разрядность полей команды
- •2.17.3. Выбор адресности команд
- •2.18. Способы адресации операндов
- •2.18.1. Непосредственная адресация
- •2.18.2. Прямая адресация
- •2.18.3. Косвенная адресация
- •2.18.4. Регистровая адресация
- •2.18.5. Косвенная регистровая адресация
- •2.18.6. Адресация со смещением
- •2.18.7. Относительная адресация
- •2.18.8. Базовая регистровая адресация
- •2.18.9. Индексная адресация
- •2.18.10. Страничная адресация
- •2.18.11. Блочная адресация
- •2.18.12. Распространенность различных видов адресации
- •2.19. Способы адресации в командах управления потоком команд
- •2.20. Функциональная организация фон-неймановской вычислительной машины
- •2.20.1. Устройство управления
- •2.20.2. Арифметико-логическое устройство
- •2.20.3. Основная память
- •2.20.4. Модуль ввода/вывода
- •2.21. Цикл команды
- •2.21.1. Стандартный цикл команды
- •2.21.2. Описание стандартных циклов команды для гипотетической машины
- •2.21.3. Машинный цикл с косвенной адресацией
2.3.2. Форма представления чисел с плавающей точкой
Эта форма (нормальная или полулогарифмическая) позволяет представлять в компьютере любые (целые, дробные или смешанные) числа. Число в форме с плавающей точкой записывается в виде двух частей: мантиссы и порядка. Мантисса включает в себя значащие разряды числа, а порядок указывает положение точки. При этом мантисса записывается как дробное число с фиксированной точкой, а порядок – как целое число с фиксированной точкой.
Знак мантиссы является знаком всего числа, а знак порядка определяет, содержит ли число целую часть.
Значение числа с плавающей точкой определяется следующим образом:
,
где т – мантисса числа; q – основание системы счисления; р – порядок числа.
Так, в десятичной системе счисления число A10 = -123,456 в форме с плавающей точкой может быть записано следующим образом:
т.д.
При заданных значениях мантиссы и порядка для определения значения числа нужно точку (запятую) в мантиссе перенести на количество разрядов, равное величине порядка, вправо для положительных порядков и влево для отрицательных. Например:
;
.
Число с плавающей точкой может быть нормализованным и ненормализованным. Число не нормализовано, если старшая цифра мантиссы равна нулю, т.е. . Нормализованное число с плавающей точкой позволяет сохранить большее количество значащих цифр, поэтому в памяти числа хранятся в нормализованном виде. Нормализация выполняется путем сдвига мантиссы влево до тех пор, пока старший разряд мантиссы не станет равным единице. Так как значение мантиссы при этом увеличивается, для сохранения величины числа при сдвиге на каждый разряд значение порядка уменьшается на единицу.
Нормализованное число с плавающей точкой представляется с точностью , где п – разрядность мантиссы. Диапазон чисел с плавающей точкой составляет:
,
где k — разрядность порядка.
Для увеличения диапазона чисел с плавающей точкой (за счет некоторого уменьшения точности) двоичная мантисса может рассматриваться как шестнадцатеричное число. В этом случае каждая двоичная тетрада представляет одну шестнадцатеричную цифру, поэтому нормализация будет нарушена лишь тогда, когда четыре старших разряда мантиссы будут равны нулю. Например, если старшие разряды мантиссы имеют вид 0, 000101 ... , то мантисса считается нормализованной, так как тетрада 0001 представляет шестнадцатеричную цифру 1. Появление незначащих нулей в мантиссе приводит к потере точности. Вместе с тем существенно увеличивается диапазон представления чисел:
.
Порядок числа может быть положительным или отрицательным. Для упрощения операций над порядками часто используют смещенный порядок путем увеличения действительного порядка на величину , где k – число разрядов порядка. При этом смещенный порядок всегда является положительным числом и поэтому его знак не указывается. Пример формата n-разрядного числа с плавающей точкой и смещенным порядком представлен на рис. 2.6. Для знака числа отводится старший разряд, k разрядов занимает смещенный порядок, а остальные п - k - 1 выделяются под мантиссу. Диапазон и точность представляемых в форме с плавающей точкой чисел зависят от формата.
Рис. 2.6. Формат числа с плавающей точкой
Рекомендуемые стандартом основные форматы чисел с плавающей точкой представлены на рис. 2.7. Одинарный формат занимает 32 разряда, двойной – 64. Обычно для повышения точности используют способ скрытой единицы.
Рис. 2.7. Основные форматы чисел с плавающей точкой:
а – одинарный; б – двойной
Суть способа заключается в том, что в нормализованном числе старший разряд мантиссы всегда равен единице, поэтому его можно не записывать, а подразумевать. Освободившийся разряд используется для записи дополнительного разряда мантиссы. Перед выполнением арифметических операций подразумеваемый разряд восстанавливается.
В одинарном формате под смещенный порядок отводится восемь разрядов, и под мантиссу – 24 (с учетом скрытой единицы). При этом диапазон представления чисел составляет: . В двойном формате смещенный порядок занимает 11 разрядов, мантисса – 53, а диапазон представления чисел составляет: .
Как и целые числа, числа с плавающей точкой могут быть записаны в упакованном формате. В микропроцессорах фирмы Intel четыре числа одинарной точности (по 32 разряда) упаковываются в группу длиной 128 разрядов. В такую же группу упаковываются два числа двойной точности (по 64 разряда).