Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2013 / БитовыеОперацииЛекция 1.docx
Скачиваний:
32
Добавлен:
23.02.2015
Размер:
73.31 Кб
Скачать

Число –3.5: с0 0с 00 00 00 00 00 00

Диапазон чисел, представимых в формате с плавающей точкой (тип double): |X|min <=|X|<=|X|max и X=0 1<=P’<=2046

|M|min*2pmin <=|X| <=|M|max*2pmax и X=0

1*2-1022<=|X| <=(2-2-52)*21023 и X=0

10k<=|X| <=10L lg2=0.30103

k= –1022*lg 2= –307.65266= -308+0.34734

L= 1024* lg 2=1024*0.30103=308.25472

2.2*10-308<=|X| <=1.7*10308 и X=0

__[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\] _____|_____[\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]______

Xmax -Xmin 0 Xmin Xmax

Точность чисел, представленных в формате с плавающей точкой: часто вместо числа Х в МС хранится его приближение Х*. Погрешность вносится из-за хранения приближенного значения мантиссы.

Абсолютная погрешность числа Х*: |X–X*| =∆( Х*) =|MX –MX*|*2px= 2-52*2px т.е. абсолютная погрешность числа зависит от порядка числа.Обычно для формата с плавающей точкой определяют относительную погрешность Х* : (Х*)

Для пользователя более важным является практический вопрос: сколько значащих цифр десятичного представления числа гарантированно сохраняются при таком формате хранения числа. Естьприближенное правилодля определения этого количества К цифр приq=2:

mдвоичных разрядов мантиссы соответствуют К десятичным цифрам: К[m/ 3.32]; Для типаdoubleК=[53/3.32]=15.96, т.е. для значения типа

Double сохраняется в памяти 15-16 десятичных знаков. Выполнение операций над числами, представленными с плавающей точкой(говорят- в плавающей арифметике).

Пусть X=Mx2Px,аY=My2Py

a)Сложение (вычитание) чисел:

Z=XY=Mx2PxMy2Py={1шаг–выравнивание порядков к большему; пустьPx>Py}

= 2Px(MxMy2PyPx) = {2 шаг–сдвиг мантиссыMyна |Py–Px| разрядов}

= 2Pxmz= {3шаг–сложение(вычитание) мантисс, получается мантиссаmz}.

= Mz EPz

Возможны случаи:

  • 1 |mz| < 2операция закончена,Mz=mz;Pz=Px;

  • 2 |mz|выполняется нормализация результата сдвигом мантиссы вправо на 1 разряд с коррекцией порядка (+1);

  • |mz| <1выполняется нормализация результата сдвигом мантиссы влево наtразрядов с коррекцией порядка (–t).

з pх 1.ххххх

– з py 1.xxyyy

з pх 0.00zzzПри вычитании близких чисел происходит

з pz 1.zz??? потеря точности

б)Умножение :

Z=XY=Mx2PxMy2Py=MxMy2Px+Py==Mz2Pz, гдеMz=MxMy;Pz=Px+Py; т.е. при умножении чисел их мантиссы перемножаются, а порядки складываются. При умножении двух мантисс может получиться результат такой, что потребуется сдвиг мантиссы вправо, но не более, чем на один разряд, тогда нужна коррекция порядка (+1).

в)Деление :

т.е. при делении чисел их мантиссы делятся, а порядки вычитаются. При делении двух мантисс может потребоваться для полученной мантиссы сдвиг влево, но не более, чем на один разряд с коррекцией порядка (–1).

Особые ситуации плавающей арифметики.

  1. Переполнение порядкапри выполнении операций плавающей арифметики;

  2. некорректность деленияв плавающей арифметике: деление на число с нулевой мантиссой;

  3. потеря значимости:Pz0, аMz= 0;

  4. исчезновение порядка:Pz<Pmin , аMz0.

Две последние ситуации не являются аварийными, они обычно приводят к тому, что результат Zзаменяется нулём – этомашинный нуль.