Кіріспе

Айналып тұрған нүктелер бірнеше битпен кодталады. Болжам бойынша, олар жалпы мақсаттағы сандық есептеулерге өте қолайлы емес. Олар арнайы мақсаттарда, көбінесе компьютерлік графикада қолданылады, онда қайталаулар аз және дәлдік эстетикалық әсер етеді. Машиналық оқыту bfloat16 сияқты ұқсас форматтарды да қолданады. Сонымен қатар, олар жиі кездеседі педагогикалық құрал ретінде компьютерлік курстарда, жылжымалы үтірлі арифметика мен IEEE 754 нөмірлерінің қасиеттері мен құрылымын көрсету үшін. 16 битті мини-флоттар жартылай дәлдікті сандар (бір және екі рет дәлдікке қарсы). Сонымен қатар 8 биттік немесе одан да аз шағын флоттар бар. Мини-флоттар IEEE 754 стандартының қағидаларына сәйкес жобалана алады. Бұл жағдайда олар нормадан төмен және нормальды сандар арасындағы шекараға қатысты (анық жазылған емес) ережелерге мойынсұнуға тиіс және шексіз және NaN үшін арнайы үлгілерге ие болуға тиіс. Нормалдастырылған сандар бейтарап экспонентімен сақталады. Стандарттың жаңа редакциясы, IEEE 754 2008, 16 биттік бинарлық мини-флоттар бар.

8-биттік float мысалы

+8 биттік мини-флотаның (1.4.3) мысал белгісі 0 0 0 0 0 0 0 0 0 0 0 Мұнда 1 байттағы (8 бит) 1 белгі биті, 4 көрсеткіші биті және 3 мәні биті бар (қысқаша айтқанда, 1.4.3 мини-флота) мини-флота көрсетілді. Экспоненттің ауытқуы 7 ретінде анықталады, бұл басқа IEEE 754 жүзулеріне сәйкес келетін мәндерді 1 шамасында ортаға салады, сондықтан (әдеттегі мәндер үшін) экспоненттің нақты көбейткіші x Барлық IEEE 754 қағидалары жарамды болуы керек. Басқа негіздегі сандар, мысалы, 101 = 5 деп белгіленеді. Биттік үлгілерде өз бөліктерін бейнелеу үшін бос орындар бар.

Нормалды саннан төмен

Мағыналық мән "0" арқылы кеңейтіледі. және экспоненттің мәні ең аз нормаланған сан сияқты 1 жоғары болып есептеледі: 0 0000 001 = 0,0012 × 21 7 = 0,125 × 2 6 = 0,001953125 (ең аз нормадан төмен сан) 0 0000 111 = 0,1112 × 21 7 = 0,875 × 2 6 = 0,013671875 (ең үлкен нормадан төмен сан)

Нормалдастырылған сандар

Мағыналылық "1.

Құндылықтар кестесі

Бұл 8 битті float-тың барлық мүмкін мәндерінің диаграммасы. 1000 001 010 011 100 111 0 0000 0 0.001953125 0.00390625 0.005859375 0.0078125 0.009765625 0.01171875 0.013671875 1 1 00001 0.015625 0.015625 0.015625 0.015675 0.015675 0.015675 0.015675 0.015675 0.015675 0.0156 0.015675 0.0156 0.0156 0.0156 0.0156 0.0156 0.0756 0.0756 0.0758 0.0756 0.0756 0.0758 0.0756 0.0758 0.0756 0.0758 0.0758 0.0758 0.0758 0.0758 0.0758 0.0758 0.0758 0.0758 0.0758 0.0758 0.0758 0.0758 0.0758 0.0758 0.0758 0.0758 0.0758 0.000 0.0758 0.0758 0.0 0.0758 0.0 0.0758 0.0 0.000000 0.0758 0.0 0.0000000 0.0000000000000 0.0000000000000000000 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 Жоғарыда көрсетілгендей кестелерді кез келген SEMB мәндерінің комбинациясы үшін Python немесе GDScript скрипті арқылы жасауға болады.

Баламалық ауытқулар

Бұл кіші өлшемдерде басқа да ауытқулар қызықты болуы мүмкін, мысалы, 2 ауытқу 0 16 сандарын 0 16 бүтін сандарымен бірдей биттік бейнелеуге әкеледі, бұл бүтін саннан басқа мәндер көрсетілмейді.

Қосу

Графикте 6 битті кіші (1.3.2.3) мини-флоттар қосылуы көрсетілген. Бұл жылжымалы нүктелік жүйе IEEE 754 ережесін дәл орындайды. NaN операндар ретінде әрқашан NaN нәтижелерін береді. Inf - Inf және (−Inf) + Inf нәтижесі NaN-да (жасыл аймақ). Inf өзгерісісіз шекті мәндермен көбейтілуі және азайтылуы мүмкін. Соңғы операндармен қосындылар шексіз нәтиже бере алады (яғни 14.0 + 3.0 = +Inf нәтижесінде - циан ауданы, −Inf - қызғылт түсті ауданы). Шекті операндар диапазоны x + y = c қисықпен толтырылады, мұнда c әрқашан бейнеленетін жүзу мәндерінің бірі (тиісінше оң және теріс нәтижелер үшін көк және қызыл).

Басқа өлшемдер

Radeon R300 және R420 GPU-да "fp24" жылжымалы нүктелік форматы қолданылды, онда 7 биттік экспонент және 16 биттік (+1 имплицитті) мантисса бар. Direct3D 9.0-дегі "Толық дәлдік" - 24 биттік жылжымалы нүктелік формат. Microsoft-тың D3D9 (Shader Model 2.0) графикалық API бастапқыда FP24 (ATI-дің R300 чипіне сәйкес) және FP32 (Nvidia-ның NV30 чипіне сәйкес) "Толық дәлдік" ретінде, сондай-ақ FP16 графикалық аппараттық жасақтамамен орындалатын vertex және пиксельдік шейдерлік есептеулер үшін "Жыны дәлдік" ретінде қолдады. Khronos Vulkan-мен пайдалану үшін 10 бит және 11 бит флоат форматтарын анықтайды. Екі форматта да белгі биті жоқ және 5 биттік экспоненті бар. 10 биттік форматта 5 биттік мантисса, ал 11 биттік форматта 6 биттік мантисса бар. IEEE SA жұмыс тобы P3109 қазіргі уақытта машиналық оқыту үшін оңтайландырылған 8 битті мини-флоттар стандарты бойынша жұмыс істейді. Қазіргі жобада бір форматы емес, "бинарлық8pP" деп аталатын 7 түрлі форматтың отбасы анықталды, мұнда "P" - 1-ден 7-ге дейінгі сан. Бұл жүзулер компактты және тиімді болу үшін жасалған, бірақ басқа IEEE жүзулері сияқты семантикаға сәйкес келмейді және теріс нөл және бірнеше NaN мәндері сияқты ерекшеліктер жоқ. Шексіздік экспоненті мен мәнін бірдей бірліктерге ие деп анықталады, басқа IEEE-дің орнына, экспоненті - бірлік, мән - нөл.

Тігілген құрылғыларда

Мини-флоталар сондай-ақ, әдетте, кіріктірілген құрылғыларда, әсіресе, микробасқарушыларда қолданылады, онда жылжымалы нүктелерді бағдарламалық жасақтамада эмуляциялау қажет болады. Есептеуді жылдамдату үшін мантисса әдетте биттердің жартысын алады, сондықтан регистр шекарасы бөліктерді ауыстырмай автоматты түрде қарастырады.