Број плутајуће тачке: шта је то? Једноставно објасњено примерима
У овом практичном савету показаћемо вам шта је број са плутајућом тачком и како се разликује од броја фиксне тачке.
Број плутајуће тачке: шта је то?
У рачунарској науци број помичне тачке се често користи за мерне уређаје који би требало да раде са одређеном тачношћу.
- Број плутајуће тачке (или „број са плутајућом тачком“) је приказ броја помоћу експоненцијалне нотације. У изузетним случајевима, то делује само отприлике. Такође можете да представите број 1230000 бројем 1.23 ⋅ 10⁶.
- 1, 23 се зове "Мантисса". 10 је "база", а 6 је "експонент". Узгред, мантису се може додати и знак. Међутим, целу ствар можете применити и на дуални систем. Можете такође представити број 10101100 бројем 1.0101100 ⋅ 2⁷. Рачунар само чува знак, мантису и експонент.
- Рачунари обично померају зарез напред-назад док испред зареза не постоји само 1. Тада ПЦ треба само да сачува децимална места мантисе и експонента.
- Тако да експонент може бити сачуван као позитиван број, додаје се фиксни број, такозвана пристраност. Најмањи могући експонент места пре децималне тачке (- пристраности) се чува као 0.
- За разлику од броја са фиксном тачком, зарез није у фиксној тачки броја с помичном тачком.
Халф, Флоат & Доубле - Заједничко кодирање бројева с помичним зарезом
Сигурно сте наишли на ова три термина, посебно када програмирате са Ардуином. Ово су стандардизоване репрезентације.
- Тип података "половина" је 16-битни број. Крајњи леви залогац одговоран је за знак. Изложак има 5 бита, а мантиса 10. Коришћена пристраност је 15. Пошто је први залога мантисе (скоро) увек 1, то се не спрема.
- Тип података "флоат" (или "сингле") је 32-битни број. И овде се мало користи за знак. Међутим, експонент има 8 бита (пристраност = 127), а мантиса 23.
- Тип података "доубле" такође користи мало за знак. Овде, међутим, експонент има 11 бита (пристраност = 1023), а мантисса чак 52 бита. То је укупно 64 бита, тј. 8 бајтова.
- Поред ове три уобичајене врсте података, постоји још много. Међутим, ови се углавном не користе јер је тачност половине, плутања и двоструке већ довољно добра.
Претворите децималне бројеве у бројеве с помичним зарезом - како то функционише
На крају, желимо вам показати како можете претворити нормалан децимални број у број с помичном тачком.
- У овом примеру користимо децимални број 18.4. Број пре децималне тачке први пут се преноси у дуални систем. Као резултат, требало би да добијете (10010) ₂.
- Тада морате претворити 0, 4. Прво помножите 0, 4 са 2. Као резултат добијете 0, 8. Забележите број пре зареза. У овом случају то је 0. Затим помножите 0.8 са 2. Овај пут као резултат добијате 1.6. Запишите 1 и наставите са израчуном са 0, 6. Након неког времена приметићете да се узорак понавља (у овом примеру). На крају, запишите све бројеве од врха до дна: 011001100110 ...
- Затим саберите бројеве: Такође додајте (⋅ 2⁰) тако да добијете 10010.01100110 ... ⋅ 2⁰. Затим померите зарез све док испред децималне тачке није само 1, а такође промените снагу на одговарајући начин. Као резултат тога требало би да добијете 1.001001100110 ... ⋅ 2⁴, пошто сте померили децималну тачку 4 места улево. Овај корак се такође назива "нормализација".
- У овом примјеру користимо тип података "флоат". Зато додајте одговарајућу вредност пристраности вашем експоненту. Морате такође претворити резултат израчуна 4 + 127 = 131 у бинарни број. Број 131 је број 10000011 у дуалном систему.
- Сада можете уписати број готовог плутајуће тачке. Прво напишите бит за знак. Пошто је позитиван број, први бит је 0. Затим морате написати 131. Све се у овом случају савршено уклапа, јер за овај број је потребно 8 бита, а 8 бита је на располагању за флоат. На крају, морате уписати прва 23 бита мантиссе, јер мантисса има 23 бита на располагању за флоат.
- Ваш готови број с помичним зарезом треба бити број 01000001100100110011001100110011. Мало јаснији је број 0 | 10000011 | 00100110011001100110011.
Претворите број с помичним зарезом у децимални број - Ево како
На крају, желимо вам показати како поново можете претворити број с помичном тачком у децимални број. За то узимамо број 1000001100100110011001100110011.
- Прво напуните број (предњи део) нулама док не добијете 16, 32 или 64 битни број. У овом случају то је 01000001100100110011001100110011.
- Прва цифра означава знак. Дакле, наш број је позитиван.
- Затим напишите следећу (у овом случају) 8 цифара и одузмите пристраност. (10000011) ₂ = 131 → 131 - 127 = 4 → Значи, позади је „⋅ 2⁴“.
- Сада напишите „1“, а затим све преостале бројеве, као и „⋅ 2⁴“: 1.00100110011001100110011 ⋅ 2⋅
- Затим померите зарез за 4 места удесно, тако да можете изоставити "⋅ 2⁴": 10010.0110011001100110011
- Затим претворите 10010 у цео број као и обично. Имаш 18 година.
- Сада морате претворити децимална места. Прва цифра након зареза има вредност 1: 2¹, друга цифра 1: 2² и тако даље. Додајте вредности и број пре зарез вам даје број 18.3999996185302734375.
У следећем практичном савету показаћемо вам како можете претворити АСЦИИ слова у бинарне бројеве.