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+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.