Двоични числа Разбиране l; кодиране на знаци и запетая - Buzut
Всеки ден сме изправени пред отрицателни числа и десетични числа. В двоичен файл няма знак минус или десетична точка. В този случай как машината, която работи само в двоичен файл, се справя с това ?

Ще обсъдим и понятието за точност на число. Тоест размерът, определен за неговото съхранение: колко значими цифри можем да съхраним.
Управление на негативи
Веднага щом говорим за изваждане, осъзнаваме, че число може да бъде отрицателно. Затова си задаваме въпроса за съхраняването на числото в двоичен файл. Очевидно трябва да преведете знака в двоично представяне. За да направите това, двоичните числа са винаги фиксиран размер.
По този начин, за число, изразено в един байт, най-значимият бит се използва за изразяване на знака. 0 е + и 1 е -. Следователно осъзнаваме, че променлива, кодирана в един байт, може да съдържа от -128 до +127, ако позволява негативи. Ако е посочено, че не е подписано, стойностите варират от 0 до 255.
За да намерите отрицателното на двоично число, просто обърнете всички битове от това число и добавете едно. Добавяме едно, защото има само една нула. Това избягва да има положителна нула и отрицателна нула, което би довело до случая, когато +0 ≠ -0, именно поради тази причина можем да стигнем до -128, а не -127.
Така че 0111 0100 е положително число (116dec). Двоичното представяне на неговото отрицателно е 1000 1100, което е всички обърнати битове, плюс един: 1000 1011 + 0000 0001. Първият бит, знак маркер, се регулира автоматично.
Тази операция се нарича допълнение на две. Ако сте любопитни, листът на Уикипедия ще ви разкаже повече за причините за тази маркировка.
Сега, когато знаете това и знаете това в аритметика, A - B = A + (-B), можете да улесните живота си, като правите изваждания в двоично.
Управление на запетая
За да се изчислят числата след десетичната запетая в двоичен формат, толкова често логиката е същата като в десетичната запетая. В десетично число 0,1 е равно на 1/10 или 10 -1; 0,01 до 10 -2 и т.н.
Логично, в двоичен формат, 0,1bin е 2 -1 и т.н. Разделяме всеки път на две. По този начин за първите четири реда след запетая имаме:
- 0,5
- 0,25
- 0,125
- 0,0625
Остава само да разберем как да представим запетая. Тайната наистина се крие в научното писане.
Фиксирана точка
Достатъчно е да се определи позицията на десетичната запетая и ние незабавно знаем стойността на числото. Например, за число, съхранявано в един байт, т.е.осем бита, ако произволно дефинираме позицията на десетичната запетая непосредствено преди четвъртия бит, тогава знаем, че 0110 1001 = 0110,1001.
Това е изключително просто. Този начин на правене на нещата се нарича фиксирана точка, тъй като позицията на точката е известна предварително. Недостатъкът на този метод е, че за число с малко десетични знаци губите значително място за съхранение. Ако въпросното число е 0110 1000, губим три бита „ненужно“.
Все още се използва фиксираната точка. При евтини процесори - микроконтролери - които имат само способността да обработват цели числа и фиксирани запетаи, това е единственото решение. Освен това в някои ситуации фиксираната точка може да увеличи скоростта на изпълнение или да подобри точността на изчисленията.
Плаваща точка
За да преодолеем този проблем със загубата на пространство, предизвикана от фиксираната точка, използваме метода за запис с плаваща запетая. Това писание представлява числа, както следва: знак × мантиса × експонентна основа . Позицията на запетая е фиксирана в мантисата. След това го караме да плава, като променя степента.
Това е точно като научната и инженерната нотация. По този начин, за един и същ размер на съхранение от четири цифри например, можем да съхраняваме 1234, както и 1.234 или 0.1234, достатъчно е да се посочи използването на степента, където е поставена запетая.
IEE754
Все още има няколко проблема. От една страна, как да се споразумеем за позицията на запетая в мантисата? От друга страна, тъй като степента може да бъде относително цяло число (подписано цяло число), знакът също трябва да се управлява на това ниво.
Без стандарт всеки производител води до вътрешно изпълнение. Следователно пренасянето на софтуер от една машина на друга е сложно поради разликите във вътрешните представяния и поведението на числата с плаваща запетая.
Закръгляване
Стандартът определя четири вида закръгляване:
- към отрицателна безкрайност,
- към положителна безкрайност,
- към нула,
- до най-близкия.
Първите три кръга се използват за представяне на числа, които надвишават ограничението за съхранение или точност на формата за представяне на числа. По този начин, ако можем да съхраним до милиард и резултатът от операция надвишава това число, тогава обявеният резултат ще бъде към положителна безкрайност.
Най-близък е естественият модел на закръгляване, което имаме предвид, когато мислим за закръгляване на число. Стандартът определя за този режим, че ако числото е между две, то се закръглява до най-близката стойност с най-малко значим бит при нула (режим на закръгляване по подразбиране).
Прецизността
Точността се определя от размера на мантисата. Не бъркайте точността и амплитудата. Прецизността се определя от размера на мантисата, докато амплитудата се определя от размера на основния показател.
Ако вземем за пример научното писане в база 10, за писане с три цифри след десетичната запетая и цял експонентен коефициент, отнасящ се до цифра, точността е четирицифрена, но можем да представим порядъци от порядъка на + 1.999M до -1.999M.
Осъзнаваме обаче, че няма да можем да имаме точност до единици на милиард. Максимумът, който може да се съхранява, е 1.999e9 и дори при по-малка стойност, например 1.123e9, точността не е налична под милиони: 1.123e9 = 1 123 000 000.
Чрез намаляване на порядъка на величина, разбира се, имаме по-фина точност. И така, 1,123e2 = 112,3 и 1,123e-9 е равно на 0,000000001123.