2.2. Vnútorná forma čísla
Každé číslo, s ktorým počítač pracuje, musí byť v jeho pamäti zapísané v nejakej štandardnej forme. BASIC počítača ukladá každé číslo na päť bytov, pričom rozlišuje tzv. malé celé čísla z intervalu -65535 až +65535 a ostatné čísla. Malé celé čísla sú uložené takto:
00h |
00h pre kladné čísla FFh pre záporné čísla |
nižší byte čísla |
vyšší byte čísla |
00h |
Číslo -257 je uložené následovne 00FF010100b.
Číslo +257 obdobne: 0000010100b.
Ostatné čísla sú uložené v semilogaritmickom tvare. Ako tento tvar vyzerá? Číslo je prevedené na tvar: ± m x 2e , kde ± je znamienko, m je mantisa, ležiaca v rozsahu 1/2 až 1 (nesmie byť 1 a má rozsah 4 byty) a e je exponent v rozsahu -127 až 128.
Uloženie je nasledujúce:
byte |
1. byte |
2. byte |
3. byte |
4. byte |
exponent |
mantisa |
Najvyšší bit exponenta, či je exponent záporný (bit je nastavený na 0), či kladný (bit je nastavený na 1). Podobne najvyšší bit v prvom byte mantisy určuje, či je číslo záporné (bit je nastavený na 1), alebo kladné (bit je nastavený na 0).
Uvedieme si príklad. Chceme zapísať číslo 1/10. Najskôr ho musíme previesť do tvaru ± m x 2e. 1/10 je menšie než 1/2 a preto je rozšírime 4/4. Dostaneme 1/10x4/4 = 4/40 = 4/5x 2-3.
Platí: 4/5 =
0.11001100110011001100110011001100b; -3 = 11111101b.
Ako sme k tomuto číslu prišli? Číslo +3 má v dvojkovej sústave zápis 00000011b. Zmeníme všetky 0 na 1 a všetky 1 na 0. Dostaneme binárne číslo 11111100b. K tomuto číslu pripočítame číslo 1 (teda 00000001b) a dostaneme:
11111100b
+ 00000001b
11111101b
A to je práve binárny zápis čísla -3. Tomuto spôsobu vytvorenia čísla -3 sa hovorí, že sme vytvorili dvojkový doplnok čísla +3. Malo by teda platiť: -3 + 3 = 0. Skúsme to:
00000011b
+ 11111101b
100000000b
Vo výsledku sa objavil ešte deviaty bit, ktorý označuje prenos do vyššieho rádu a hovoríme, že prišlo k pretečeniu. Pri práci s osembitovými číslami tento bit zanedbávame.
Binárny zápis 11111101b predstavuje číslo -3d. Pretože je ale mantisa kladná, zmeníme prvý bit mantisy na 0. Podobne zmeníme prvý bit exponentu na 0 (exponent je záporný). Dostávame teda binárne číslo:
01111101 01001100 11001100 11001100 11001100b
čo je vyjadrenie 1/10 v semilogaritmickom tvare. Podobne môžeme postupovať pri prevodu akéhokoľvek čísla do semilogaritmického tvaru.