Броят на фиксирана точка

Броят на фиксирана точка (на английски фиксирана точка номер.) - формат на реалното число в паметта на компютъра като цяло число. Броят х се и число представителство х "са свързани с формула

където Z - цена (тегло) LSB.

Най-простият пример за фиксирана точка аритметика - рубли превод пени. В този случай, да се помни, в размер на 12 рубли 34 копейки, пишем за място в паметта на номер 1234.

Ако Z <1 . для удобства расчётов делают, чтобы целые числа кодировались без погрешности. Другими словами, выбирают целое число u (машинную единицу ) и принимают z = 1 u>>. Ако Z> 1. тя е направена цяло.

Ако не е необходимо да има някакви специфични номера, включени в фракционна малко мрежа, програмисти обикновено избрани 2 Z = - е> - това позволява използването на умножение и деление операции, битови смени. От като аритметична казват: «F бита в дробна част, аз = N-F - да цяло" и обозначени като "I, F», «аз .f» или «Qi.f». Например: аритметични 8.24 възлага на цялата част 8 бита и 24 - чрез фракционна. Съответно, тя е в състояние да съхранява номера -128 до 128-Z на цената (тегло) LSB Z = 2-24 = 5 ⋅ 96 10-8 = 596 \ cdot 10>.

За ъглови стойности често правят Z = 2 π ⋅ 2 - е> (особено ако тригонометрична функция се изчислява от таблицата).

Наименованието "фиксирана точка" (или "фиксирана точка", по-нататък - FL) се дължи на проста метафора между две предварително определени битове на запетая за превръщане на фракционна число. Например, цяло число от 1 234 след точката на вмъкване в фракционна превръща 12,34.

Във Великобритания, САЩ и други страни, вместо запетая за разделяне на цялата част от десетичната запетая се използва, така че концепцията за "фиксирана точка" и "фиксирана точка" еквивалент.

Недостатъкът на фиксирана точка - много тесен диапазон от числа, със заплаха от преливане на единия край на диапазона, а загубата на точност на изчисленията, от друга. Този проблем е довело до изобретението и плаваща запетая. Например: ако искате точност в 3 значещи цифри 4 байта фиксирана точка предоставя набор от 6 порядъци (т.е. разликата е около 10 6 между най-големия и най-малкия брой), 4 байт брой единична точност - 70 порядъци.

Малко програмни езици осигуряват вградена поддръжка за числа с фиксирана точка, тъй като през по-голямата използва двоичен или десетични числа с плаваща запетая по-лесно и точно. Числата с плаваща запетая по-лесно поради големия динамичен обхват, няма нужда предварително да зададете броя на знака след десетичната запетая за тях. Ако имаме нужда от фиксирана точка аритметика, тя може да се реализира от програмист не е дори и в езици като C и C ++, които обикновено включват такава аритметика.

ISO / IEC TR 18037 стандарт добавя поддръжка за числа с фиксирана точка в разработчиците GCC компилатор език C. вече са внедрили тази подкрепа.

Почти всички бази данни и SQL език подкрепа на фиксирана точка аритметика и съхранението на тези данни. Например, PostgreSQL има специален цифров вид за точно съхранение номера до 1000 цифри.

OpenGL ES 1.x стандарт включва поддръжка за числа с фиксирана точка, тъй като тя е предназначена за вградени системи. които често не разполагат с FPU.

  • Събиране и изваждане на фиксирана точка номера - конвенционален събиране и изваждане: (х ± у) "= Х" ± Y '.
  • По подобен начин, умножение и деление от постоянна число: (Сх) '= в ⋅ х ".
  • Умножение и деление са различни от цяло число от постоянна. (X ⋅ у) '= [х "⋅ Y' ⋅ Z] = [х" ⋅ Y 'ф]> \ полето]> (XY)' = [х "Z ⋅ у '] = [х" ⋅ UY " ]> \ дясно) '= \ наляво [> \ полето] = \ наляво [> \ полето]>. където [] - действието на закръгляване на цяло число. По-специално, ако малко на фракционна част F: (х ⋅ у) '= (х "⋅ Y') SHR е. (X у) "= Х" SHL е у '\, г \ \ \ \ \ наляво (> \ дясно)' = \, е >>>.
  • За други операции, в допълнение към конвенционалната Тейлър серия и итерационни методи за изчисляване на масата са широко използвани.

Ако величините и в резултат са различни цени (тегло) LSB, формулата е по-сложно - но понякога трябва да се направи, защото на голяма разликата в порядък.

За да превежда номера от формата на фиксирана точка във формат chelovekochitaemy, и обратно, нормалната прехвърлянето правила дробни числа от позиционен номер система към друга.