Text do binárního kódu a zpět, bajt po bajtu, v UTF-8
Binární kód
Přeložte text do binárního kódu a binární kód zpět do textu. Písmeno A je 01000001; slovo ahoj je 01100001 01101000 01101111 01101010. Háčky, čárky i emoji projdou tam i zpět beze ztráty, protože překladač používá stejné kódování jako váš prohlížeč.
Jak to použít
Pište do levého pole. Každý znak se vpravo změní na jednu nebo více skupin osmi číslic oddělených mezerou, jedna skupina na bajt.
Vložte skupiny osmi jedniček a nul do pravého pole a vlevo se objeví text. Skupiny, které nemají přesně osm binárních číslic, překladač přeskočí.
Háčky, čárky i emoji projdou, protože překladač používá UTF-8, kódování celého webu. Písmeno s háčkem zabere dvě skupiny a emoji čtyři.
Co binární kód uchovává
Počítač ukládá čísla a dohoda určuje, které číslo je které písmeno. Základní dohodou, na které dnešní text stále stojí, je ASCII tabulka se 128 kódy, a nejpoužívanější je dnes Unicode, který čísluje přes sto tisíc znaků všech písem. Binární kód textu je posloupnost těchto čísel zapsaná ve dvojkové soustavě a seskupená do bajtů po osmi číslicích.
Unicode má mnohem více znaků, než se vejde do jednoho bajtu, a proto potřebuje pravidlo, jak velké číslo rozložit do několika bajtů. Tím pravidlem je UTF-8 a jeho autoři ho navrhli tak, aby 128 znaků ASCII zabíralo dál jediný bajt, totožný s tím starým. Slovo ahoj má proto čtyři skupiny pro čtyři písmena, 01100001 01101000 01101111 01101010, zatímco čaj má čtyři skupiny pro tři písmena: 11000100 10001101 01100001 01101010. Háček stojí jeden bajt navíc a překladač vrátí čaj beze ztráty.
Překladač na této stránce pracuje s bajty, a proto je převod zpět do textu vždy přesný, i u slova s háčkem. Skupiny, které nejsou osm číslic z jedniček a nul, ignoruje a nepokouší se je číst jako text.
Binární, šestnáctkový a tentýž bajt
Osm binárních číslic se špatně čte, a tak programátoři zapisují tentýž bajt šestnáctkově, dvěma číslicemi od 0 do F. Převod je přímý, čtyři bity na číslici: písmeno A je binárně 01000001 a šestnáctkově 41; ahoj je 61 68 6F 6A. ASCII tabulka na webu ukazuje oba zápisy každého kódu vedle desítkového.
Binární kód znaku zapisuje jeho číslo z tabulky znaků. Znak nula má v tabulce kód 48 a binárně je to 00110000, tedy osm číslic s jedničkami uvnitř. Kdo si překladačem chce ověřit počítání ve dvojkové soustavě, bude překvapený; překladač převádí text.
Tabulka
Tabulka uvádí písmena a číslice s jejich bajty v UTF-8. Bajty vygenerovala tatáž funkce, kterou používá překladač. První tři velká písmena ukazují vzor: stejná předpona a počítadlo na konci.
- A
01000001 - B
01000010 - C
01000011
| Znak | Bajt |
|---|---|
| Velká písmena | |
| A | 01000001 |
| B | 01000010 |
| C | 01000011 |
| D | 01000100 |
| E | 01000101 |
| F | 01000110 |
| G | 01000111 |
| H | 01001000 |
| I | 01001001 |
| J | 01001010 |
| K | 01001011 |
| L | 01001100 |
| M | 01001101 |
| N | 01001110 |
| O | 01001111 |
| P | 01010000 |
| Q | 01010001 |
| R | 01010010 |
| S | 01010011 |
| T | 01010100 |
| U | 01010101 |
| V | 01010110 |
| W | 01010111 |
| X | 01011000 |
| Y | 01011001 |
| Z | 01011010 |
| Malá písmena | |
| a | 01100001 |
| b | 01100010 |
| c | 01100011 |
| d | 01100100 |
| e | 01100101 |
| f | 01100110 |
| g | 01100111 |
| h | 01101000 |
| i | 01101001 |
| j | 01101010 |
| k | 01101011 |
| l | 01101100 |
| m | 01101101 |
| n | 01101110 |
| o | 01101111 |
| p | 01110000 |
| q | 01110001 |
| r | 01110010 |
| s | 01110011 |
| t | 01110100 |
| u | 01110101 |
| v | 01110110 |
| w | 01110111 |
| x | 01111000 |
| y | 01111001 |
| z | 01111010 |
| Číslice | |
| 0 | 00110000 |
| 1 | 00110001 |
| 2 | 00110010 |
| 3 | 00110011 |
| 4 | 00110100 |
| 5 | 00110101 |
| 6 | 00110110 |
| 7 | 00110111 |
| 8 | 00111000 |
| 9 | 00111001 |
Časté otázky
Jak se písmeno zapisuje binárně?
Každý znak má v tabulce znaků číslo a překladač ho zapíše ve dvojkové soustavě osmi číslicemi. Velké A je 65, binárně 01000001. Malé a je o 32 více, 01100001: rozdíl mezi velkým a malým písmenem je jediný bit.
Proč osm číslic?
Protože se paměť počítače dělí na bajty po osmi bitech a bajt pojme čísla od 0 do 255. 128 znaků ASCII tabulky se vejde do sedmi bitů a osmý bit zůstal volný; UTF-8 tímto bitem označuje znaky, které potřebují více než jeden bajt.
Jak se binárně zapíšou háčky a emoji?
Znak mimo ASCII tabulku zabere v UTF-8 dva až čtyři bajty, každý zapsaný osmi číslicemi. Písmeno č jsou dva bajty: 11000100 10001101. Emoji usměvavé tváře jsou 4 bajty. Překladač vrátí původní text přesně, protože se cestou žádný bajt nezahazuje.
Je binární a šestnáctkový zápis totéž?
Oba zápisy vyjadřují tentýž bajt v jiné soustavě. Každé čtyři binární číslice odpovídají jedné šestnáctkové, takže bajt je osm binárních číslic nebo dvě šestnáctkové: písmeno A je binárně 01000001 a šestnáctkově 41. ASCII tabulka na webu ukazuje oba zápisy vedle sebe.
Je nula binárně nula?
Znak nula, ten v textu, má v tabulce znaků kód 48, binárně 00110000. Číslo nula, se kterým počítač počítá, je něco jiného. Záměna obou patří při prvním čtení binárního kódu k běžným omylům: zakódovaný je vždy znak a jeho číselná hodnota v kódu nikde není.