Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Тема 1.5. Числа с плавающей точкой





В результате изучения данной темы Вы будете:

  • знать о принципах представления чисел с плавающей точкой;
  • понимать, каким образом происходит округление чисел;
  • иметь представление о стандарте арифметики с плавающей точкой IEEE 754.

До этого момента речь шла только о целых числах, однако, вычислительные машины, разрабатывались в первую очередь для облегчения трудоемких математических расчетов с вещественными числами. Поэтому, следующим шагом будет ознакомление с принципами представления вещественных чисел в компьютерах.

Принципы представления с плавающей точкой

Любое число можно выразить в следующей нормальной форме (такой способ еще называется экспоненциальной формой):

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).

экспонента числа: e
q-1
q-2
q-r
мантисса числа: m
Зн m

Рис. 1.1. Общая форма представления чисел в ЭВМ

Последовательность разрядов содержит:

  • разряд для знака мантиссы;
  • r цифровых разрядов для q-ичного модуля мантиссы;
  • разряд для знака порядка;
  • s разрядов для q-ичного модуля экспоненты.

Диапазон представления модулей чисел в нормальной

нормализованной форме определяется неравенством:

В конкретной ЭВМ диапазон представления чисел с плавающей точкой зависит от основания системы и числа разрядов для представления экспоненты.

Примерами применяемых форм чисел с плавающей точкой с различными основаниями системы счисления являются:

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 – не число). Его тоже можно использовать в качестве операнда.

Подведем итоги

  • в вычислительной технике удобнее использовать числа, представленные в нормальной форме;
  • для однозначного отображения числа используется нормальная нормализованная форма;
  • вычислительная техника оперирует с числами конечной точности, поэтому результаты различных арифметических операций необходимо округлять;
  • для стандартизации представления чисел с плавающей точкой был введен стандарт IEEE 754, который может представлять нормализованные числа, ненормализованные, нуль, бесконечность и не числа.

Вопросы для самоконтроля

1. Вспомните и назовите принципы представления чисел с плавающей точкой. Что такое нормальная нормализованная форма? Зачем она используется?

2. Что такое округление? Почему оно применяется в вычислительной технике?

3.

Расскажите основные положения стандарта IEEE. Почему помимо нормализованных чисел в стандарте были введены дополнительные 4 типа чисел?

Индивидуальные задания

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

____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________








Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом...

ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры...

Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.