Što je pozicijski sustav
U decimalnom broju 4.095 znamenka 4 ne vrijedi 4: vrijedi 4.000, jer stoji na mjestu tisućica. Svaka pozicija množi znamenku potencijom broja 10 (1, 10, 100, 1.000…). To je pozicijski sustav, a baza je broj različitih znamenki koje se koriste: u decimalnom sustavu deset.
Binarni sustav radi jednako, ali s bazom 2: postoje samo 0 i 1, a svako mjesto vrijedi dvostruko više od prethodnog. Heksadecimalni koristi bazu 16: šesnaest znamenki su 0 do 9 i slova A do F, a svako mjesto vrijedi 16 puta više od prethodnog. Računala rade u binarnom jer strujni krug mora razlikovati samo dva stanja (isključeno i uključeno), a heksadecimalni je kratak način zapisivanja tih bitova.
| Pozicija (zdesna nalijevo) | Vrijednost u binarnom | Vrijednost u heksadecimalnom |
|---|---|---|
| 1. | 1 | 1 |
| 2. | 2 | 16 |
| 3. | 4 | 256 |
| 4. | 8 | 4.096 |
| 5. | 16 | 65.536 |
| 6. | 32 | 1.048.576 |
| 7. | 64 | 16.777.216 |
| 8. | 128 | 268.435.456 |
Iz binarnog u decimalni, ručno
Svaka se znamenka zapiše s vrijednošću svog mjesta i zbroje se samo ona mjesta na kojima je 1. Primjer s 1101: zdesna nalijevo mjesta vrijede 1, 2, 4 i 8.
- Zapišite broj, a ispod njega vrijednost svake pozicije: 1 1 0 1 iznad 8 4 2 1.
- Pogledajte što je na svakom mjestu: 1 na mjestu osmice, 1 na mjestu četvorke, 0 na mjestu dvojke i 1 na mjestu jedinice.
- Zanemarite mjesta na kojima je 0 (ovdje je to mjesto dvojke).
- Zbrojite: 8 + 4 + 0 + 1 = 13. Dakle, 1101 u binarnom je 13 u decimalnom.
S više znamenki je isto: 11111111 je 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255, najveća vrijednost koja stane u 8 bitova. A 10110110 je 128 + 32 + 16 + 4 + 2 = 182.
Iz decimalnog u binarni, uzastopnim dijeljenjem
Broj se dijeli s 2 iznova i iznova, a ostatak svakog dijeljenja (uvijek 0 ili 1) zapisuje se sve dok količnik ne postane 0. Ostaci, pročitani odozdo prema gore, čine binarni broj. Primjer s 45:
- 45 ÷ 2 = 22, ostatak 1
- 22 ÷ 2 = 11, ostatak 0
- 11 ÷ 2 = 5, ostatak 1
- 5 ÷ 2 = 2, ostatak 1
- 2 ÷ 2 = 1, ostatak 0
- 1 ÷ 2 = 0, ostatak 1
Čitanjem ostataka odozdo prema gore dobije se 101101. Za provjeru zbrojite: 32 + 8 + 4 + 1 = 45.
Postoji i alternativna metoda koju mnogi preferiraju: oduzimanje potencija broja 2 od najveće prema najmanjoj. Za 200: stane 128 (ostaje 72), stane 64 (ostaje 8), ne staju 32 i 16, ali stane 8 (ostaje 0). Korištena mjesta su 128, 64 i 8, pa je 200 = 11001000.
Heksadecimalni: šesnaest znamenki i tablica pri ruci
Budući da ne postoje znamenke za 10 do 15, koriste se slova A, B, C, D, E i F. Jedna heksadecimalna znamenka odgovara točno četirima bitovima (jedan „nibble“), i zato je tako praktična: bajt od 8 bitova zapisuje se samo dvjema heksadecimalnim znamenkama.
Za pretvorbu iz heksadecimalnog u decimalni pomnožite svaku znamenku potencijom broja 16 njezina mjesta i zbrojite. Na primjer, 3F = 3 × 16 + 15 = 63 i A3 = 10 × 16 + 3 = 163.
| Decimalni | Binarni (4 bita) | Oktalni | Heksadecimalni |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
Zašto se koristi heksadecimalni: bajtovi, boje i adrese
Bajt je 8 bitova i kreće se od 0 do 255 (00000000 do 11111111). Ručno zapisivanje bitova je sporo i sklono pogreškama; u heksadecimalnom isti bajt čine dva znaka, od 00 do FF. Za pretvorbu iz binarnog u heksadecimalni podijelite bitove u skupine od četiri zdesna i svaku skupinu zamijenite njezinom znamenkom iz tablice. Primjer: 11010111 dijeli se na 1101 i 0111, a to su D i 7, pa je vrijednost D7. U decimalnom je to 13 × 16 + 7 = 215.
Najpoznatiji slučaj su web boje. U #FF8800 postoje tri bajta: FF za crvenu (255), 88 za zelenu (136) i 00 za plavu (0). To je intenzivna narančasta: sva crvena, nešto više od pola zelene i nimalo plave. Heksadecimalni se pojavljuje i u memorijskim adresama, kodovima pogrešaka i mrežnim identifikatorima.
Iz teksta u binarni pomoću ASCII-ja
Računalo svako slovo sprema kao broj, a taj broj kao bitove. U ASCII tablici A je 65, što je u 8-bitnom binarnom 01000001. Riječ „Hi“ su dva slova: H je 72 (01001000), a i je 105 (01101001), pa se piše 01001000 01101001. Za „Hola“ su to 72, 111, 108 i 97, odnosno 01001000 01101111 01101100 01100001, a u heksadecimalnom 48 6F 6C 61.
Alat koristi UTF-8 kodiranje: za osnovna engleska slova svaki znak zauzima jedan bajt od 8 bitova, ali slova s dijakriticima (č, ć, š, ž, đ) ili emotikoni zauzimaju više bajtova, pa daju više od 8 bitova. Na primjer, slovo š su dva bajta: 11000101 10100001 (C5 A1 u heksadecimalnom).
Kako sve to učiniti pomoću alata
Pretvarač „Binarni, decimalni i hex“ služi za provjeru vaših ručnih računa ili za rješavanje dugih brojeva bez pogrešaka.
- Upišite broj u polje njegove baze: „Decimalni (baza 10)“, „Binarni (baza 2)“, oktalni ili „Heksadecimalni (baza 16)“. Ostala tri popunit će se sama.
- Ako znamenka ne odgovara bazi (na primjer 2 u binarnom), alat će vas upozoriti.
- Za tekst ga upišite u polje „Tekst“ i pogledajte „Binarni (8 bitova po znaku)“ i heksadecimalni po bajtovima. Možete i zalijepiti bitove u skupinama od 8 kako biste se vratili na tekst.
- Za neobične baze koristite „Bilo koja baza (2 do 36)“: odaberete početnu bazu, ciljnu bazu i broj.
Ograničenja: pretvara samo nenegativne cijele brojeve (bez decimala i predznaka) i ne dodaje vodeće nule umjesto vas, pa ako želite fiksnih 8 bitova, morate ih dopuniti ručno (13 je 00001101). Ništa što upišete ne napušta vaš preglednik.
Česte pogreške
- Čitati ostatke obrnutim redoslijedom: kod uzastopnog dijeljenja prvi ostatak je znamenka krajnje desno, a ne krajnje lijevo.
- Zaboraviti vodeće nule kad su potrebne: 13 je 1101, ali kao bajt je 00001101. Važno je kad je duljina dio podatka, kao kod boje ili mrežne maske.
- Brkati slovo O s nulom ili heksadecimalno B (11) s osmicom pri kopiranju. U heksadecimalnom slova vrijede jednako velika i mala, ali nisu isto što i znamenka.
- Ostaviti prefiks 0x ili znak # pri pretvorbi: to su samo oznake da je broj heksadecimalan i treba ih ukloniti prije lijepljenja.
- Misliti da je 10 u binarnom deset: to je dva. Isto „10“ vrijedi 2, 10 ili 16, ovisno o bazi.
Riješene vježbe
Pokušajte riješiti svaku prije nego pogledate odgovor, a zatim provjerite alatom.
- Pretvorite 10110110 u decimalni i heksadecimalni. Odgovor: 128 + 32 + 16 + 4 + 2 = 182; u skupinama od četiri, 1011 0110 = B6.
- Pretvorite 200 u binarni i heksadecimalni. Odgovor: 11001000 i C8 (12 × 16 + 8 = 200).
- Pretvorite 7F u binarni. Odgovor: 7 = 0111 i F = 1111, dakle 01111111, što je u decimalnom 127.
- Zapišite „OK“ binarno. Odgovor: O je 79, a K je 75, odnosno 01001111 01001011.
Često postavljana pitanja
Kako pretvoriti 1101 iz binarnog u decimalni?
Zbrojite vrijednosti mjesta na kojima je 1: 8 + 4 + 1 = 13. Druga znamenka zdesna je 0, pa se 2 ne zbraja.
Koliko je 255 u binarnom i heksadecimalnom?
255 je 11111111 u binarnom i FF u heksadecimalnom. To je najveća vrijednost koja stane u bajt od 8 bitova.
Zašto heksadecimalni koristi slova?
Zato što mu je potrebno šesnaest različitih simbola, a decimalni sustav daje samo deset (0 do 9). Zato A vrijedi 10, B 11, C 12, D 13, E 14 i F 15.
Koliko se različitih brojeva može zapisati s 8 bitova?
256, od 0 do 255. Općenito, s n bitova može se prikazati 2 na n-tu potenciju vrijednosti.
Pretvara li alat negativne brojeve ili brojeve s decimalama?
Ne, samo nenegativne cijele brojeve. Za tekst koristi UTF-8, pa slova s dijakriticima i emotikoni daju više od 8 bitova.