Двострука тачност

Из Википедије, слободне енциклопедије

Двострука тачност (енгл. double precision, double) је у рачунарству формат броја који за бележење бројевне вредности рационалног броја у покретном (пливајућем) зарезу. Користи се осам бајтова (64 бита) за запис броја. Притом интерпретација овог сегмента меморије зависи од оперативног система или саме структурираности група битова у запису.

Веома често се говори колоквијално о реалним бројевима у двострукој тачности, то су ипак рационални бројеви. Израз двострука тачност не значи да се тако може приказати број са двоструко више тачних децимала у односу на једноструку тачност. Целокупан запис броја је двоструко дужи, а тачност броја (која зависи од дужине мантисе) је уместо 23 повећана на 52 (или 55) бита, што је нешто више него двоструко више децимала. Поред овога, у двострукој тачности се може представити значајно шири опсег бројева.

IEEE754[уреди]

Према стандарду IEEE 754, реални бројеви са двоструком тачношћу се деле на три дела: знак, експонент и фракцију (мантису). Тачнија подела битова по овим елементима је:

IEEE 754 Double Floating Point Format(sr).svg
  • Знак броја одређује бит са највећом вредношћу индекса − 63 (највећом тежином), при чему вредност 1 означава негативан а 0 позитиван број.
  • Експонент је одређен са следећих 11 битова на местима 62 - 52. Овај број нема знака, а помоћу њега се одређује тзв. карактеристика која учествује у рачунању крајње вредности броја. Она се добија следећом формулом: карактеристика = експонент - 1023.
  • Фракција (мантиса) је вредност броја нормализована тако да се налази у опсегу веће или једнако 0,5 и мање од 1. Формирају је битови на позицијама 51 - 0. Овај број се у бинарној репрезентацији може представити као 0,1ббббббббббббб..... где су б битови који могу бити 0 или 1. Обзиром да увек на почетку стоји 0,1 ови битови се не морају физички појавити у запису, тојест може се имплицитно претпоставити да увек стоје ту. Зато се каже да мантиса представља 53 бита тачности иако су записана само 52 бита.

Двострука тачност има могућност представљања \log_{10}(2^{53}) \approx 15.955 тачних цифара. Ако се каже да двоструком тачношћу може приказати број у „тачности од 16 децимала“ то је погрешно јер се може приказати првих 16 значајних цифара, без обзира где је децимална запета.

Тачна интерпретација оваквог броја гласи:

(-1)знак · 2карактеристика · (1, фракција )

односно математички

 broj = (-1)^{znak}(1 + \sum_{i=1}^{52} \ b_{-i}2^{-i} )\times 2^{(e-1023)}

Пример[уреди]

Рецимо да је у сагласности са овим стандардом задат бинарни број двоструке тачности, чију децималну репрезентацију треба наћи:

0011111010000100000000000000000000000000000000000000000000000000

Број ће прво бити подељен на знак, експонент и фракцију:

0 01111101000 010000...

А потом ће вредности параметара бити одређене:

S = 0
E = (01111101000)2 = (1000)10
M = (010000...)2
C = E - 1023 = -23

Вредност = (-1)S · (1.M)2 · 2C
= (-1)0 · (1.010000...)2 · 2-23
= 1 · (1 + 2-2)10 · 2-23
= 1.25 · 2-23

Види још[уреди]

Литература[уреди]

  • Јозо Дујмовић, Програмски језици и методе програмирања, 1990, Научна књига, Београд