- •Раздел 3 Представление и обработка чисел в компьютере
- •1 В чем отличие позиционных и непозиционных систем счисления? Приведите примеры.
- •2На что указывает основание системы счисления
- •3Назовите алфавит двоичной, восьмеричной и шестнадцатеричной систем счисления
- •4Сформулируйте правила перевода чисел из одной системы счисления в другу
- •5Назовите форматы записи целых и вещественных чисел в памяти эвм.
- •1.1.3 Дополнительный код
- •Обратный код
- •Сложение в обратном коде
- •7Как выполняется сложение чисел в формате с фиксированной запятой
- •8Как выполняется сложение чисел в формате с плавающей запятой
- •9Как выполняется умножение чисел в формате с фиксированной запятой
- •10Как выполняется умножение чисел в формате с плавающей запятой
- •11Как выполняется деление чисел в формате с фиксированной запятой?
- •12Как получить код числа в формате с плавающей запятой по стандарту ieee 754.
- •13Как получить число по его коду в формате с плавающей запятой по стандарту ieee 754
- •14Как выполняется сложение чисел в формате с плавающей запятой по стандарту ieee 754?
- •15Пояснить сущность контроля работы цифровых автоматов по четности, по нечетности
- •16Пояснить сущность контроля работы цифровых автоматов по Хеммингу. Коды Хэмминга.
12Как получить код числа в формате с плавающей запятой по стандарту ieee 754.
Стандарт
IEEE 754 не обязывает, а рекомендует
применение пакета оговоренных в нем
форматов, способов кодирования данных,
округления результатов и многое другое.
Задача выбора формата для конструктора
универсальной ЦВМ предельно упростилась,
и с этого времени фирмы стали производить
универсальные ЦВМ с арифметикой с
плавающей точкой удовлетворяющей
рекомендациям стандарта. Задача
программистов также несколько упростилась,
т.к. нет необходимости изучать особенности
двоичной арифметики с плавающей точкой
разных ЦВМ, достаточно овладеть знанием
стандарта.
Но
нужно помнить, что стандарты консервативны,
но не вечны. И, тем не менее, этим стандартом
пользуемся все мы с вами, коллеги.
Стандарт
поддерживает несколько форматов:
одинарная точность(32 разряда), двойная(64
разряда) и двойная расширенная точность.
Так же предусмотрены другие форматы
для предотвращения ошибок округления
и т.д. В стандарте описаны случаи
возникновения исключительных ситуаций:
Nan, бесконечность, деление на ноль и т.д.
Ничего не напоминает? Очень важную роль
играет округление чисел в формате с
плавающей точкой. Это тоже описано в
стандарте.
И
наконец-то, главный раздел – Выполнение
операций над числами в формате с плавающей
точкой. В этом разделе описаны все
арифметические операции от сравнения
до деления, а так же все нюансы при
выполнении таких операций. Про этот
раздел нельзя сказать вот так, «в двух
словах». Скажу лишь, что это настоящая
морока и передо мной встала задача
понять, как это происходит.
Опишу
вкратце свой алгоритм работы «Деление
в формате с плавающей точкой». После
того, как мы получили операнды А и В,
нужно было проверить их на все возможные
случаи возникновения исключительных
ситуаций. Это и деление на ноль и Nan и
бесконечность. Немного ниже, на таблице,
изображены типы представления чисел,
которые поддерживает формат:
Если
операнды действительно являлись числами
в формате IEEE-754, начинался второй этап
выполнения операции: приведение порядков.
Ни для кого не секрет, что числа в формате
с плавающей точкой выглядят примерно
так:
Это
представление числа в формате с одинарной
точностью.
Порядок
числа в ЦВМ – это, в моём понимании,
порядковый номер числа в ЦВМ, то есть
его порядок. Наверняка есть научное
определение, но оно лишь запутает ещё
больше. Так вот, раз числа имеют разные
порядки, их нельзя делить. Следует
сначала привести порядки к одному виду
смещением порядков. Но для этого
требовалось проанализировать порядки
на min и маx значение. А когда происходит
смещение порядков, мантиссы тоже
сдвигаются. Если порядки уравнены, нужно
проверить мантиссы, не вылетели ли они
за границы и не заполнились ли они нулями
и т.д. Закончив ряд проверок, можно
приступать к самому главному: наконец-то
делить мантиссы. Ну, тут всё просто, как
и вся двоичная арифметика. Я делил
делитель на делимое, а остаток записывал
в регистр и складывал. Там ещё есть
несколько способов деления: с восстановление
и без восстановления остатка. Да и это
ещё не всё! В конце следовало округлить
полученный результат по нужному условию
и определить знак частного.Это всего
лишь на словах, хоть и звучит страшно,
на деле выглядит куда лучше. Тогда я
откровенно запал на этот стандарт, что
принесло мне не только более глубокие
знания в ЦВМ и двоичной арифметике, но
и удовольствие что я смог это сделать,
удовольствие осознавать то, что я знаю
что-то очень важное.
У
меня всё, на самом деле тема очень
интересная и увлекательная. Кто
заинтересовался, с удовольствием скину
стандарт IEEE-754 и отвечу на ваши вопросы.
