2.1.2. Dvojková sústava

 

Základom dvojkovej sústavy je číslo 2. Číslice tejto sústavy teda môžu nadobúdať hodnoty 0 a 1. Tvorba čísiel v tejto sústave je analogická ako v sústave desiatkovej. Na identifikáciu čísiel v dvojkovej sústave budeme používať na konci čísla znak b (binárne vyjadrenie).

Skúsme si zapísať číslo v dvojkovej sústave: 11001100b. Toto číslo teraz rozpíšeme:

 

      1x27 + 1x26 + 0x25 + 0x24 + 1x23 + 1x22 + 0x21 + 0x20 =

      1x128 + 1x64 + 0x32 + 0x16 + 1x8 + 1x4 + 0x2 + 0x1 =

      128 + 64 + 8 + 4 = 204d.

 

Podobným spôsobom sa dá vyčísliť ľubovolné číslo v dvojkovej sústave a previesť do sústavy desiatkovej.

Opačný prevod (z desiatkovej sústavy do dvojkovej) je trocha zložitejší. Skúsime previesť číslo 204d z desiatkovej do dvojkovej sústavy. Prevod sa vykonáva delením prevádzaného čísla číslom 2, teda základom číselnej sústavy do ktorej prevádzame. Delenie sa vykonáva tak dlho, dokiaľ nie je výsledok delenie nula:

      204 : 2 = 102           zvyšok: 0         ^

      102 : 2 =  51           zvyšok: 0         |

       51 : 2 =  25           zvyšok: 1         |          

       25 : 2 =  12           zvyšok: 0         |

        6 : 2 =   3           zvyšok: 0         |

        3 : 2 =   1           zvyšok: 1         |

        1 : 2 =   0           zvyšok: 1         |

Teraz si napíšeme zvyšky po delení (teda 0 a 1) vedľa seba. Začnite zdola v smere šípky, spodná číslica bude zapísaná prvá zľava. Za ňou vpravo napíšte druhú číslicu zdola atď. Dostanete číslo 11001100b, teda naše pôvodné číslo.

Ostávajú nám ešte desatinné čísla. Tie sa prevádzajú obdobne, iba namiesto delenie dvomi sa číslo násobí dvomi. Pokiaľ výsledok prekročí číslo 1, do dvojkového zápisu sa zapíše 1 a od výsledku sa jednotka odčíta. Pokiaľ výsledok neprekročí číslo 0, do dvojkového zápisu sa zapíše 0 a pokračuje sa v násobení.

Výsledok sa zapíše v tom poradí, ako bol získaný. Teda za desatinnou bodkou sa zapíše prvý výsledok po násobení, potom druhý atď. Uvedieme si príklad. Chceme previesť číslo 4/5d = 0.8d.

Postupujeme takto:

 

výpočet

celá časť

desatinná časť

0.8 * 2 = 1.6

1

0.6

0.6 * 2 = 1.2

1

0.2

0.2 * 2 = 0.4

0

0.4

0.4 * 2 = 0.8

0

0.8

0.8 * 2 = 1.6

1

0.6

0.6 * 2 = 1.2

1

0.2

0.2 * 2 = 0.4

0

0.4

0.4 * 2 = 0.8

0

0.8

0.8 * 2 = 1.6

1

0.6

0.6 * 2 = 1.2

1

0.2

0.2 * 2 = 0.4

0

0.4

0.4 * 2 = 0.8

0

0.8

0.8 * 2 = 1.6

1

0.6

0.6 * 2 = 1.2

1

0.2

0.2 * 2 = 0.4

0

0.4

0.4 * 2 = 0.8

0

0.8

0.8 * 2 = 1.6

1

0.6

0.6 * 2 = 1.2

1

0.2

0.2 * 2 = 0.4

0

0.4

0.4 * 2 = 0.8

0

0.8

0.8 * 2 = 1.6

1

0.6

0.6 * 2 = 1.2

1

0.2

0.2 * 2 = 0.4

0

0.4

0.4 * 2 = 0.8

0

0.8

0.8 * 2 = 1.6

1

0.6

0.6 * 2 = 1.2

1

0.2

0.2 * 2 = 0.4

0

0.4

0.4 * 2 = 0.8

0

0.8

0.8 * 2 = 1.6

1

0.6

0.6 * 2 = 1.2

1

0.2

0.2 * 2 = 0.4

0

0.4

0.4 * 2 = 0.8

0

0.8

 

Dvojkový zápis 4/5d. je 0.11001100110011001100110011001100b s presnosťou na 32 miest.

V ďalšom texte budeme nazývať jednotlivé číslice v dvojkovom zápise čísla bity. Každý bit čísla môže nadobúdať hodnoty nula alebo jedna. Osem za sebou idúcich bitov budeme nazývať byte. Byte môže nadobúdať hodnoty 00000000b = 0d až 11111111b = 255d. Každý bit v byte má svoje poradové číslo. Prvý bit sprava má poradové číslo 0 (nultý bit, najnižší bit, bit s najmenšou váhou, LSB - Least Significant Bit), ďalší bit má poradové číslo 1 (prvý bit), až siedmy bit sprava má poradové číslo 7 (siedmy bit, najvyšší bit, bit s najväčšou váhou, MSB - Most Significant Bit).

Dva byty môžu vyjadriť číslo 0 až 65535 (256*256=64 kB), tri byty číslo 0 až 16777216 (256*256*256=16 MB) atď.

V prípade, že je číslo vyjadrené dvoma bytami (tiež sa hovorí uložené na dvoch bytoch), hovoríme o "nižšom byte" a "vyššom byte" čísla. Hodnotu čísla potom dostaneme spočítaním hodnoty nižšieho bytu s 256-násobkom hodnoty vyššieho bytu. V pamäti počítača sú tieto dva byty uložené nasledovne, poradie je dané zvyklosťami firmy Intel (u druhých firiem môže byť poradie opačné):

 

nižší byte

vyšší byte

adresa X

adresa (X+1)

hodnota=nižší byte + 256*vyšší byte