Powrót do listy

Liczby binarne stało- i zmiennoprzecinkowe: Reprezentacja ułamków w komputerze

Do tej pory omawialiśmy liczby całkowite, jednak świat fizyczny, grafika 3D, obliczenia naukowe oraz codzienne aplikacje wymagają operowania na liczbach niecałych (ułamkowych), takich jak 3.14, 0.001 czy -273.15. W ramach przedmiotu UTK (Urządzenia Techniki Komputerowej) przyszły technik musi poznać dwa główne sposoby, w jakie procesor i systemy cyfrowe radzą sobie z zapisem ułamków: arytmetykę stałoprzecinkową oraz standard zmiennoprzecinkowy.

1. Liczby stałoprzecinkowe (Fixed-Point)

W reprezentacji stałoprzecinkowej pozycja "kropki" (separatora dziesiętnego) jest z góry ustalona na stałe dla całej struktury bitowej:

2. Liczby zmiennoprzecinkowe (Floating-Point / Standard IEEE 754)

Aby umożliwić komputerom operowanie na niezwykle małych oraz niesamowicie dużych liczbach za pomocą tego samego formatu, stworzony został uniwersalny standard IEEE 754:

3. Anatomia liczby zmiennoprzecinkowej (32-bitowy format IEEE 754)

Struktura 32-bitowej liczby zmiennoprzecinkowej rozkładana jest na trzy niezależne pola:

Strategia technika

Podczas programowania mikrokontrolerów, optymalizacji kodu lub analizy wydajności aplikacji pamiętaj, że obliczenia na liczbach zmiennoprzecinkowych (typ float lub double) są znacznie bardziej obciążające dla procesora niż operacje na liczbach całkowitych. W prostych urządzeniach IoT czy sterownikach przemysłowych, gdzie nie jest wymagana ekstremalna precyzja, inżynierowie często celowo zamieniają ułamki na liczby stałoprzecinkowe (np. mnożąc temperaturę przez 100 i przesyłając ją jako zwykłą liczbę całkowitą), aby drastycznie przyspieszyć działanie kodu i zmniejszyć zużycie energii.