|
Тема 1.5. Числа с плавающей точкойВ результате изучения данной темы Вы будете:
До этого момента речь шла только о целых числах, однако, вычислительные машины, разрабатывались в первую очередь для облегчения трудоемких математических расчетов с вещественными числами. Поэтому, следующим шагом будет ознакомление с принципами представления вещественных чисел в компьютерах. Принципы представления с плавающей точкой Любое число можно выразить в следующей нормальной форме (такой способ еще называется экспоненциальной формой): X = m×qe, где m – мантисса числа; q – основание системы счисления; e – экспонента (порядок). Для десятичной системы счисления число будет иметь вид: X = m×10e Компьютерная версия такого представления называетсяпредставлением с плавающей точкой. Ниже приведены примеры чисел в такой записи.
3,14 = 0,314×101 = 3,14×100 0,000001 = 0,1×10-5 = 1,0×10-6 1941 = 0,1941×104 = 1,941×103 Как видно из примеров, существует несколько способов представления того или иного числа. Поэтому, для однозначности, в компьютерах используется нормальная нормализованная форма, в которой положение точки всегда задается перед значащей цифрой мантиссы, т.е. выполняется условие q-1 ≤ |m| < q0 = 1 В общем случае вещественное число можно хранить в памяти компьютера в виде двоичного представления мантиссы и экспоненты (Рис. 1.1).
Рис. 1.1. Общая форма представления чисел в ЭВМ Последовательность разрядов содержит:
Диапазон представления модулей чисел в нормальной нормализованной форме определяется неравенством: В конкретной ЭВМ диапазон представления чисел с плавающей точкой зависит от основания системы и числа разрядов для представления экспоненты. Примерами применяемых форм чисел с плавающей точкой с различными основаниями системы счисления являются: X = m×2e, где 1/2 ≤ |m| < 1; X = m×8e, где 1/8 ≤ |m| < 1; X = m×16e, где 1/16 ≤ |m| < 1. Область значений определятся по числу разрядов в экспоненте e, а точность определяется по числу разрядов в мантиссе m. Округление чисел Рассмотрим представление R с трехразрядной мантиссой со знаком в диапазоне 0,1 ≤ |m| < 1 и двухразрядной экспонентой со знаком, эти числа находятся в диапазоне от -10-99 до +0,999×10+99. Однако, в представлении R можно выразить ровно 179100 положительных чисел, 179100 отрицательных чисел и 0 (который можно выразить разными способами). То есть из бесконечного числа действительных чисел в этом диапазоне можно выразить всего 358201 чисел. Например, результат деления числа +0,100×103 на 3 нельзя выразить точно в нашей системе представления. Если полученное число нельзя выразить в используемой системе представления, нужно брать ближайшее число, которое представимо в этой системе. Такой процесс называетсяокруглением. Точность округления зависит от промежутков между смежными числами, которые (промежутки) не постоянны. Промежуток между числами +0,998×10+99 и +0,999×10+99 гораздо больше промежутка между числами +0,998×100 и +0,999×100. Однако если промежутки между числом и его соседом выразить как процентное отношение от этого числа, большой разницы в промежутках не будет. Другими словами,относительная погрешность, полученная при округлении, приблизительно равна и для малых, и для больших чисел. Выводы, сделанные для системы представления с трехразрядной мантиссой и двухразрядной экспонентой, справедливы и для других систем представления чисел. При изменении числа разрядов в мантиссе или экспоненте просто меняется число представляемых единиц в этих областях. С увеличением числа разрядов в мантиссе увеличивается плотность элементов и, следовательно, точность приближений. С увеличением количества разрядов в экспоненте расширяется область определения чисел за счет уменьшения точности. Стандарт IEEE 754 До 80-х годов каждый производитель компьютеров имел свой собственный формат чисел с плавающей точкой. Все форматы отличались друг от друга, более того, в некоторых из них арифметические действия выполнялись неправильно, поскольку арифметика с плавающей точкой имеет некоторые тонкости, которые не очевидны для обычного разработчика аппаратного обеспечения. Чтобы изменить эту ситуацию, в конце 70-х годов IEEE (Institute of Electrical and Electronic Engineers – институт инженеров по электротехнике и электронике, США) учредил комиссию для стандартизации арифметики с плавающей точкой. Целью было не только дать возможность переносить данные с одного компьютера на другой, но и обеспечить разработчиков аппаратного обеспечения заведомо правильной моделью. В результате получился стандарт IEEE 754 (IEEE, 1985). В настоящее время большинство процессоров содержат команды с плавающей точкой, которые соответствуют этому стандарту. В отличие от многих стандартов, которые представляли собой неудачные компромиссы и мало кого устраивали, этот стандарт неплох, в большей степени благодаря тому, что его изначально разрабатывал один человек, профессор математики университета Беркли Вильям Каган (William Kahan). Стандарт определяет три формата: с одинарной точностью (32 бита), с удвоенной точностью (64 бита) и с повышенной точностью (80 битов) (Рис. 1.2). Рис. 1.2. Форматы для стандарта IEEE с плавающей точкой: одинарная точность (а), удвоенная точность (б), повышенная точность (в) Все форматы начинаются со знакового бита для всего числа: 0 указывает на положительное число, а 1 – на отрицательное. Затем следует смещенная экспонента, т.е. к ней прибавляется число так, чтобы экспонента всегда была неотрицательной. Для формата одинарной точности прибавляется 127, для формата удвоенной точности смещение – 1023, для повышенной точности – 16383. Всегда неотрицательная экспонента избавляет от необходимости выделять один бит для хранения ее знака и упрощает выполнение операций сравнения экспонент и арифметических операций над ними. Нормализованная мантисса начинается с двоичной запятой, за которой следует 1 бит, а затем остаток мантиссы. Однако, 1 бит перед мантиссой сохранять не нужно, поскольку можно просто предполагать, что он есть. Следовательно, стандарт определяет мантиссу следующим образом: она состоит из неявного бита, который всегда равен 1, неявной двоичной запятой, за которыми идут 23, 52 или 64 произвольных бита. Если все биты мантиссы равны 0, то мантисса имеет значение 1,0. Если они равны 1, то числовое значение мантиссы немного меньше, чем 2,0. Существуют традиционные проблемы, связанные с числами в компьютере – это определение их переполнения, потери значимости и инициализации. Для этого в стандарте IEEE помимо нормализованных чисел предусмотрено еще 4 типа чисел (Рис. 1.3).
Рис. 1.3. Числовые типы стандарта IEEE Возникает проблема в том случае, если абсолютное значение (модуль) результата меньше самого маленького нормализованного числа с плавающей точкой, которое можно представить в этой системе. Раньше аппаратное обеспечение действовало одним из двух способов: либо устанавливало результат на 0, либо вызывало ошибку из-за потери значимости. Ни один из этих двух способов не является удовлетворительным, поэтому в стандарт IEEE введеныненормализованные числа. Неявный бит 1 слева от двоичной запятой превращается в 0. Ненормализованные числа можно легко отличить от нормализованных, поскольку у последних не может быть экспоненты 0. В этой схеме присутствуют 2 нуля, положительный и отрицательный, определяемые по знаковому биту. Оба имеют экспоненту 0 и мантиссу 0. Здесь тоже бит слева от двоичной запятой по умолчанию 0, а не 1. С переполнением нельзя справиться постепенно. Вместо этого существует специальное представление бесконечности: с экспонентой, содержащей все единицы, и мантиссой, равной 0. Это число можно использовать в различных математических выражениях – оно подчиняется обычным математическим правилам для бесконечности. Например, бесконечность и любое число в сумме дают бесконечность. Конечное число разделить на бесконечность равно 0. Любое конечное число, разделенное на 0, стремится к бесконечности. А что получится, если бесконечность разделить на бесконечность? Результат не определен. Для такого случая существует другой специальный формат, NaN (Not a Number – не число). Его тоже можно использовать в качестве операнда. Подведем итоги
Вопросы для самоконтроля 1. Вспомните и назовите принципы представления чисел с плавающей точкой. Что такое нормальная нормализованная форма? Зачем она используется? 2. Что такое округление? Почему оно применяется в вычислительной технике? 3. Индивидуальные задания 1. Преобразуйте следующие числа в формат стандарта IEEE с одинарной точностью. Результаты представьте в восьми и шестнадцатеричных разрядах. · 9 · 5/32 · -5/32 · 6,125 _______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 2. Преобразуйте следующие числа с плавающей точкой одинарной точности из шестнадцатеричной в десятичную систему счисления: · 42E28000h · 3F880000h · 00800000h · C7F00000h _______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 3. Число с плавающей точкой в формате одинарной точности в IBM/370 состоит из 7-битной смещенной экспоненты (смещение 64), 24-битной мантиссы и знакового бита. Двоичная запятая находится слева от мантиссы, Основание возведения в степень – 16. Порядок полей – знаковый бит, экспонента, мантисса. Выразите число 7/64 в виде нормализованного шестнадцатеричного числа в этой системе. _______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 4. Чтобы сложить два числа с плавающей точкой, нужно уровнять экспоненты (сдвинув мантиссу). Затем можно сложить мантиссы и нормализовать результат, если в этом есть необходимость. Сложите числа одинарной точности ЗЕЕ00000h и 3D800000h и выразите нормализованный результат в шестнадцатеричной системе счисления. _________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ 5. Следующие двоичные числа с плавающей точкой состоят из знакового бита, смещенной экспоненты (смещение 63) с основанием 2 и 16-битной мантиссы. Нормализуйте их. · 0 1000000 0001010100000001 · 0 0111111 0000001111111111 · 0 1000011 1000000000000000 ____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.)... ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между... Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор... ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|