Mi az a helyiértékes számrendszer
A 4095 decimális számban a 4 nem 4-et ér, hanem 4000-et, mert az ezresek helyén áll. Minden helyiérték a számjegyet 10 egy hatványával szorozza (1, 10, 100, 1000…). Ez a helyiértékes számrendszer, az alap pedig a használt különböző számjegyek száma: a decimálisban tíz.
A bináris ugyanígy működik, de 2-es alappal: csak a 0 és az 1 létezik, és minden helyiérték kétszer annyit ér, mint az előző. A hexadecimális 16-os alapot használ: a tizenhat számjegy a 0–9 és az A–F betűk, és minden helyiérték 16-szor annyit ér, mint az előző. A számítógépek binárisan dolgoznak, mert egy áramkörnek csak két állapotot kell megkülönböztetnie (ki és be), a hexadecimális pedig ezeknek a biteknek a rövid leírási módja.
| Helyiérték (jobbról balra) | Érték binárisban | Érték hexadecimálisban |
|---|---|---|
| 1. | 1 | 1 |
| 2. | 2 | 16 |
| 3. | 4 | 256 |
| 4. | 8 | 4096 |
| 5. | 16 | 65 536 |
| 6. | 32 | 1 048 576 |
| 7. | 64 | 16 777 216 |
| 8. | 128 | 268 435 456 |
Binárisból decimálisba, kézzel
Minden számjegy mellé odaírod a helyiértékét, és csak azokat a helyiértékeket adod össze, ahol 1-es áll. Példa az 1101-gyel: jobbról balra a helyiértékek 1, 2, 4 és 8.
- Írd le a számot, alá pedig az egyes pozíciók értékét: 1 1 0 1 fölött 8 4 2 1.
- Nézd meg, mi áll az egyes helyeken: 1-es a 8-as helyén, 1-es a 4-esén, 0 a 2-esén és 1-es az 1-esén.
- Hagyd figyelmen kívül azokat a helyeket, ahol 0 áll (itt a 2-esét).
- Add össze: 8 + 4 + 0 + 1 = 13. Tehát az 1101 binárisan 13 decimálisan.
Több számjeggyel is ugyanez a helyzet: a 11111111 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255, a legnagyobb érték, amely 8 bitre elfér. A 10110110 pedig 128 + 32 + 16 + 4 + 2 = 182.
Decimálisból binárisba, ismételt osztással
A számot újra és újra elosztod 2-vel, és feljegyzed minden osztás maradékát (mindig 0 vagy 1), amíg a hányados 0 nem lesz. A maradékok alulról felfelé olvasva adják a bináris számot. Példa a 45-tel:
- 45 ÷ 2 = 22, maradék 1
- 22 ÷ 2 = 11, maradék 0
- 11 ÷ 2 = 5, maradék 1
- 5 ÷ 2 = 2, maradék 1
- 2 ÷ 2 = 1, maradék 0
- 1 ÷ 2 = 0, maradék 1
A maradékokat alulról felfelé olvasva 101101 jön ki. Ellenőrzésként add össze: 32 + 8 + 4 + 1 = 45.
Van egy másik módszer is, amelyet sokan jobban szeretnek: a 2 hatványait vonod ki a legnagyobbtól a legkisebbig. A 200-nál: belefér a 128 (marad 72), belefér a 64 (marad 8), a 32 és a 16 nem fér bele, de a 8 igen (marad 0). A használt helyiértékek a 128, a 64 és a 8, tehát 200 = 11001000.
Hexadecimális: tizenhat számjegy és egy táblázat kéznél
Mivel a 10–15 értékekre nincs számjegy, az A, B, C, D, E és F betűket használjuk. Egy hexadecimális számjegy pontosan négy bitnek felel meg (egy «nibble»-nek), és ezért olyan kényelmes: egy 8 bites bájt mindössze két hexadecimális számjeggyel írható le.
Hexadecimálisból decimálisba váltáshoz szorozd meg az egyes számjegyeket a helyük 16-os hatványával, és add össze. Például 3F = 3 × 16 + 15 = 63 és A3 = 10 × 16 + 3 = 163.
| Decimális | Bináris (4 bit) | Oktális | Hexadecimális |
|---|---|---|---|
| 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 |
Miért használjuk a hexadecimálist: bájtok, színek és címek
Egy bájt 8 bit, és 0-tól 255-ig terjed (00000000-tól 11111111-ig). A biteket kézzel leírni lassú és hibaérzékeny; hexadecimálisan ugyanaz a bájt két karakter, 00-tól FF-ig. Binárisból hexadecimálisba váltáshoz oszd a biteket négyes csoportokra jobbról, és minden csoportot cserélj a táblázatbeli számjegyére. Példa: a 11010111 az 1101 és a 0111 csoportra bomlik, ezek D és 7, tehát értéke D7. Decimálisan ez 13 × 16 + 7 = 215.
A legismertebb példa a webes színek. A #FF8800 három bájtot tartalmaz: FF a vörös (255), 88 a zöld (136) és 00 a kék (0). Ez egy élénk narancs: teljes vörös, a zöldből valamivel több mint a fele, és semennyi kék. A hexadecimális memóriacímekben, hibakódokban és hálózati azonosítókban is megjelenik.
Szövegből binárisba ASCII-val
A számítógép minden betűt számként tárol, a számot pedig bitekként. Az ASCII-táblában az A 65, ami 8 bites binárisan 01000001. A «Hi» szó két betű: a H 72 (01001000), az i 105 (01101001), így 01001000 01101001 az írásmódja. A «Szia» esetén 83, 122, 105 és 97, vagyis 01010011 01111010 01101001 01100001, hexadecimálisan 53 7A 69 61.
Az eszköz az UTF-8 kódolást használja: az alap angol betűknél minden karakter egy 8 bites bájtot foglal el, de egy á, más ékezetes betű vagy egy emodzsi több bájtot, ezért 8 bitnél többet ad. Például az á két bájt: 11000011 10100001 (C3 A1 hexadecimálisan).
Hogyan csináld mindezt az eszközzel
A «Bináris, decimális és hexa» átváltó arra jó, hogy ellenőrizd a kézi számolásaidat, vagy hogy hosszú számokat hiba nélkül oldj meg.
- Írd be a számot a saját számrendszerének mezőjébe: «Decimális (10-es számrendszer)», «Bináris (2-es számrendszer)», oktális vagy «Hexadecimális (16-os számrendszer)». A másik három magától kitöltődik.
- Ha a számjegy nem való az adott számrendszerbe (például egy 2-es binárisban), az eszköz figyelmeztet.
- Szöveghez írd be a «Szöveg» mezőbe, és nézd meg a «Bináris (karakterenként 8 bit)» és a bájtonkénti hexadecimális értéket. Bitsorozatot is beilleszthetsz 8-asával csoportosítva, hogy visszakapd a szöveget.
- Ritka számrendszerekhez használd a «Bármilyen számrendszer (2-től 36-ig)» részt: kiválasztod a kiinduló és a cél számrendszert, és beírod a számot.
A korlátok: csak nemnegatív egész számokat vált át (tizedesjegy és előjel nélkül), és nem tesz hozzá vezető nullákat, így ha fix 8 bitet szeretnél, kézzel kell kiegészítened (a 13 00001101). Amit beírsz, az nem hagyja el a böngésződet.
Gyakori hibák
- A maradékok fordított olvasása: az ismételt osztásnál az első maradék a legjobbra eső számjegy, nem a legbalra eső.
- A vezető nullák elfelejtése, amikor szükség van rájuk: a 13 az 1101, de bájtként 00001101. Ez akkor számít, ha a hossz is az adat része, például egy színnél vagy egy hálózati maszknál.
- Az O betű összekeverése a nullával, vagy a hexadecimális B (11) a 8-assal másoláskor. Hexadecimálisan a betűk kis- és nagybetűvel is ugyanannyit érnek, de nem azonosak egy számjeggyel.
- A 0x előtag vagy a # jel meghagyása átváltáskor: ezek csak jelzik, hogy a szám hexadecimális, beillesztés előtt el kell távolítani őket.
- Azt hinni, hogy a bináris 10 tíz: ez kettő. Ugyanaz a «10» a számrendszertől függően 2, 10 vagy 16.
Kidolgozott gyakorlófeladatok
Próbáld megoldani mindegyiket, mielőtt megnézed a választ, majd ellenőrizd az eszközzel.
- Válts át a 10110110-t decimálisba és hexadecimálisba. Válasz: 128 + 32 + 16 + 4 + 2 = 182; négyes csoportokban 1011 0110 = B6.
- Válts át a 200-at binárisba és hexadecimálisba. Válasz: 11001000 és C8 (12 × 16 + 8 = 200).
- Válts át a 7F-et binárisba. Válasz: 7 = 0111 és F = 1111, tehát 01111111, ami decimálisan 127.
- Írd le az «OK» szót binárisan. Válasz: az O 79, a K 75, vagyis 01001111 01001011.
Gyakran ismételt kérdések
Hogyan váltom át az 1101-et binárisból decimálisba?
Összeadod azoknak a helyiértékeknek az értékét, ahol 1-es áll: 8 + 4 + 1 = 13. A jobbról második számjegy 0, ezért a 2-t nem kell hozzáadni.
Mennyi a 255 binárisan és hexadecimálisan?
A 255 binárisan 11111111, hexadecimálisan FF. Ez a legnagyobb érték, amely egy 8 bites bájtba belefér.
Miért használ betűket a hexadecimális?
Mert tizenhat különböző jelre van szüksége, a decimális rendszer pedig csak tizet ad (0–9). Ezért az A értéke 10, a B 11, a C 12, a D 13, az E 14, az F pedig 15.
Hány különböző szám írható le 8 bittel?
256, 0-tól 255-ig. Általában n bittel 2 az n-edik hatványon érték ábrázolható.
Átváltja az eszköz a negatív vagy tizedestörtes számokat?
Nem, csak nemnegatív egész számokat. Szövegnél UTF-8-at használ, ezért az ékezetes betűk és az emodzsik 8 bitnél többet adnak.