Archiv pro rubriku: Ostatní

UTF-16 a binární reprezentace

Následující článek navazuje na velmi podobný text, jenž popisoval převod do dvojkové soustavy v rámci kódování UTF-8. Z mého pohledu se transformace do binární reprezentace u UTF-16 provádí ještě jednodušeji než v případě UTF-8.

Převádět budu slovo řepa a neobejdu se pochopitelně bez Unicode tabulky. Nejprve vyhledám znak ř. Dozvídám se hodnotu 15916 a ihned si spočítám podobu v dvojkové soustavě – 1 0101 10012. Nyní nastává fáze samotného kódování do UTF-16. S pomocí níže zobrazených pravidel nacházejících se například na Wikipedii určím počet dostupných bitů. Vkládat mohu pouze na místa označená jako x.

 UTF-16

Především si povšimněte, že v případě dvou bajtů ve své podstatě zapisuji pouze samotný binární kód. Teprve v případě čtyř bajtů nastupuje určitá forma režie. Písmeno ř tedy v UTF-16 vypadá takto – 0000000101011001 2. Pro přehlednost a kratší zápis lze provést převod do šestnáctkové soustavy. Jak však patrně již správně tušíte, výsledek vypadá shodně jako zápis ř v Unicode, tedy 015916. Obdobně postupuji i u dalších zbývajících znaků:

  • ř – 0000000101011001 2015916
  • e – 0000000001100101 2006516
  • p – 0000000001110000  2007016
  • a – 0000000001100001  2006116

 K ověření doporučuji následující nástroj.

Endianita

Pro zajímavost dále uvedu, že UTF-16 v sobě nese informaci o použité endianitě. K tomuto účelu se využívá BOM (byte order mark). Existují dvě varianty:

  • big-endian – Na nejnižší adresu se ukládá nejvýznamnější bit. Následují další bity až po ten nejméně významný. V paměti proto nejprve narazíme na nejvýznamnější bit.
  • little-endian – Nejnižší adresa obsahuje nejméně významný bit. Následující narůstající paměťové buňky slouží k ukládání bitů směrem k tomu nejvýznamnějšímu.

Číslo 0xAABBCCDD tedy bude uloženo následovně:

  • big-endianAA BB CC DD
  • little-endianDD CC BB AA

Kindle a čtení knih v anglickém jazyce

Kindle

Foto: Tina Phillips / freedigitalphotos.net

Během nedávné akce internetového obchodu Alza, jenž byla inspirována černým pátkem, tedy pro zámoří dnem typickým pro nakupování, se mi podařilo zakoupit čtečku Kindle 5 za 999 Kč. Původní cena přitom zněla 2 499 Kč a na zákazníky čekalo 50 kusů. Jak patrně tušíte, dobu potřebnou k okamžitému vyprodání prodlužoval pouze silně přetížený server.

Samotná čtečka po prvním spuštění pracuje v omezeném režimu, jenž některé funkce skrývá. Například není možno ani nastavit správný čas. Teprve po registraci na Amazon.com a přiřazení přístroje ke konkrétnímu účtu jsou dostupné všechny možnosti.

Opravdu jsou reklamy nepříjemné?

Popis produktu v eshopu připomínal, že se jedná o sponzorovanou verzi, jenž zobrazuje reklamy třetích stran. Ty však během čtení údajně nijak neruší. Musím uznat, že toto tvrzení je pravdivé. Mnohdy zajímavé inzeráty bojují o pozornost majitele po vypnutí čtečky, kdy zastanou roli spořiče obrazovky. Osobně mi tyto reklamy přišly mnohem záživnější než mnohdy podivné obrázky nasazené před prvním připojením čtečky k Wi-Fi. Jejich přítomnost mi proto vůbec nevadí. Jinou situaci představuje reklamní proužek na úvodní obrazovce obsahující všechny dostupné ebooky. Při natočení Kindle do módu krajina příliš přívětivě nevypadá. V případě orientace na výšku jde o obyčejný banner, který běžně potkáváme na webu. Žádné jiné plochy pro inzerenty Kindle v zásobě nemá. Během čtení na vás proto nikdy žádná reklama skutečně nevyskočí.

Výdrž

Se zakázanými bezdrátovými přenosy symbol baterie jen velmi nerad mění svůj stav směrem k naprostému vybití. Displej na bázi elektronického inkoustu totiž spotřebovává energii pouze během svého překreslování. Vypnutý stav si proto může dovolit ponechat již zmíněný spořič. Po rozbalení například kresba na displeji informovala, jak čtečku zapnout. Nejprve jsem dokonce myslel, že jde o nalepenou fólii se zmíněnou informací. Po spuštění mě nejprve na několik vteřin zalil pocit zklamání, protože obraz nebyl nijak ostrý a rozhodně se neshodoval s tím, co jsem o Kindle četl. Záhy však patrně proběhla určitá forma inicializace a displej ukázal svoji schopnost věrohodného napodobení papíru.

Koupě knihy

Pokud vám nevadí angličtina, zavítejte do Kindle Store. Integrovaný obchod mi svoji jednoduchostí a pohodlím připomíná Google Play. Zaujala mě sekce Kindle Singles, kde se nachází příběhy s velmi nízkou cenou. Já například pořídil zajímavý ebook za pouhý dolar.

Český slovník pro Kindle

Závěrem chci popsat svůj zážitek z čtení zmíněné eknihy. Díky integrovanému anglickému slovníku lze kdykoliv vybrat neznámé slovo a okamžitě se zobrazí (v angličtině) jeho vysvětlení. Jak jsem ovšem záhy zjistil, existuje dokonce i český slovník. Ten stačí stáhnout a přemístit do Kindle jako běžný soubor. Pokud jej následně nastavíte jako výchozí, automaticky dojde k překladu do mateřského jazyka.

Převod desetinného čísla do binární reprezentace

Tento text volně navazuje na článek popisující transformaci celého čísla do dvojkové soustavy. V několika ohledech na něj dokonce i odkazuje, proto doporučuji si nejprve prostudovat v něm popsané postupy. Následně můžete směle přikročit k převodu čísla s desetinnou čárkou.

Na úvod bude vhodné říci, že binární číslo pro aritmetické účely není jedinou možnou podobou údaje. Další formy symbolizují počítače a jejich způsoby ukládání binárních dat pro své vlastní účely.

Nejprve začnu převodem čísla v desítkové soustavě pro další matematické využití. Konkrétně půjde o 10,62510. Oddělím přitom od sebe celou a desetinnou část. Nyní se budu věnovat pouze 0,62510. Převod čísla 10 popisuje již zmíněný předcházející článek.

  • Mohu od 0,625 odečíst 1/2 bez toho, aby se dostal do záporných hodnot? ANO, učiním tak.
  • Mohu od 0,125 odečíst 1/4 bez toho, aby se dostal do záporných hodnot? NE
  • Vezměme opět 0,125. Mohu odečíst 1/8 bez toho, abych se dostal do záporných hodnot? ANO, učiním tak.
  • Zbývá nula, a proto převod končí. Pokud by se tak nestalo, pokračovali bychom dále s 1/16, 1/32, 1/64

Nyní nahradíme všechny odpovědi ANO jedničkou a tvrzení NE nulou. Výsledek zapisujeme směrem do horního údaje dolů. Získáváme tedy 1012. Přidáme-li 1010 v binární soustavě jako 10102, máme výsledek v podobě 1010,1012.

Nyní přichází na řadu reprezentace pro hardware počítače. Lze se vydat celkem dvěma cestami – pevnou nebo plovoucí desetinnou čárkou.

Pevná čárka

Nejprve si zvolíme počet míst za celou částí čísla, jenž budeme uchovávat. V našem případě půjde o 3. Dále musíme znát základ soustavy, do které převádíme, tedy 2. Provedeme jednoduchý výpočet 23 a tímto mezivýsledkem vynásobíme vstupní číslo, -10,62510 (povšimněte si přidaného znamínka mínus, jenž nám zajistí zajímavější postup). Pochopitelně -10,625 x 8 = -85. Z tohoto dalšího mezivýsledku oddělíme celou část (tedy -85) a tu následně převedeme do binární podoby. Využít můžeme například doplňkový kód – 101010112.

Plovoucí čárka

Transformace do podoby s proměnlivou řadovou čárkou se řadí mezi složitější operace. Podrobněji se ji například věnuje tento tutoriál. Výsledná hodnota se skládá celkem ze tří částí:

  • 1 bit pro znaménko (0 pro kladné číslo, 1 symbolizuje záporný údaj)
  • 8 bitů pro exponent
  • mantissa (normovaný tvar) – 23 bitů

Využijeme 1010,1012 z prvního příkladu a provede úpravu na tvar s exponentem, jenž zajistí existenci jediné číslice před desetinou čárkou -> 1,010101 x 23. Nyní zformujeme druhou část, k exponentu 3 přičteme 127 a provedeme převod do dvojkové soustavy -> 100000102. Zbývá mantissa, kterou však již již v podstatě disponujeme. Protože normovaný tvar neuchovává jedničku před čárkou využijeme pouze  ,010101. Výsledek vypadá takto:

0 10000010 01010100000000000000000

K ověření poslouží tato pomůcka.