Једнострука тачност

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

Једнострука тачност (енгл. single precision, single) је у рачунарству начин приказивања рационалних бројева код кога се користе користе четири бајта (32 бита) за бележење бројевне вредности. У свакодневном говору се за овај начин представљања бројева користи израз "реални бројеви у покретном зарезу" мада је овиме могуће представити само један подскуп рационалних бројева. Опсег овако представљених бројева иде приближно од 0.29•10-38 до 1.70•1038 уз тачност представљања која износи око 7 цифара.

Данас се махом имплементира према стандарду IEEE 754 иако постоје и друга структурна решења овог формата.

IEEE 754[уреди]

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

Float example(sr).svg
  • Знак броја одређује бит са највећом вредношћу индекса − 31 (највећом тежином), при чему вредност 1 означава негативан а 0 позитиван број.
  • Експонент је цео број одређен са следећих 8 битова на местима 30 - 23. Овај број нема знака већ се за обележавање и позитивних и негативних бројева користи метод "вишак 127". Помоћу њега се одређује тзв. карактеристика која учествује у рачунању крајње вредности броја. Она се добија следећом формулом: карактеристика = експонент - 127.
  • Фракција односно мантиса је нормализована вредност основног броја између 0,5 и 1 и која се у зависности од експонента интерпретира на различите начине. Формирају је битови на позицијама 22 - 0.

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

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

Пример: из бинарног у децимални запис[уреди]

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

11000001001100000000000000000000

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

1 10000010 011000...

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

S = 1
E = (10000010)2 = (130)10
M = (011000...)2
C = E - 127 = 3

Вредност = (-1)S · (1.M)2 · 2C
= (-1)1 · (1.011000...)2 · 23
= -1 · (1 + 2-2 + 2-3)10 · 23
= -1 · (23 + 21 + 20)
= -1 · (8 + 2 + 1)
= -11

Пример: из децималног у бинарни запис[уреди]

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

Вредност = 5.23

Овај број ће прво бити преведен у свој бинарни запис, тако да садржи укупно 23+1 бита.

(5.23)10 = (101.00(11101011100001010001))2 = (101.001110101110000101000)2

Потом ће бити трансформисан у експоненцијални запис, тако да испред зареза буде само један бит.

(101.001110101110000101000)2
= (1.01001110101110000101000)2 · 22

Сада му се могу издвојити чиниоци. Фракција M су сви битови иза зареза, карактеристика C степен двојке на крају израза а бит за знак је 0, пошто је број позитиван. Експонент E се рачуна по формули: експонент = карактеристика + 127.

S = 0
M = 01001110101110000101000
C = 2
E = C + 127 = (129)10 = (10000001)2

Сада можемо да запишемо број у бинарном формату (S + M + E):

0 10000001 01001110101110000101000
= 01000000101001110101110000101000

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

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