DOUG LLYOYD: Takže hexadecimální čísla, jako bychom potřebovali další základní číslo Schéma v pořádku? No, většina západních kultur, jak jste pravděpodobně obeznámeni, použijte desetinnou system-- základnu 10, k reprezentaci číselných dat. Máme číslice 0, 1, 2, 3, 5, 6, 7,8,9. A pokud budeme potřebovat k reprezentaci hodnoty vyšší než devět, můžeme kombinovat tyto číslice použití pojmu místo hodnoty. Takže pro 10, máme 1 číslice následuje 0 číslicí a my jsme intuitivně pochopit, že to, co děláme je zde jsme násobení první 1 o 10, a pak se přidá 0 pro celkem 10. Počítače něco udělat pěkný podobné, jak budete pravděpodobně znát, s binárním system-- základně 2. Rozdíl tam být že existují pouze 2 číslice pracovat with-- 0 a 1. A tak naše místo hodnoty, místo toho, aby jednou, ten, set, tisíc, jak se by být v desítkové soustavě, jsou jeden, dva, čtyři, osm, a tak dále. Zde je věc však, tyto 0 a 1, zejména jestli máme být počítačoví odborníci a děláme spoustu programování nebo při práci s počítači, šli , které mají být vidět velké množství binárních čísel. A ti, 0 a 1 je ve velkých řetězcích může být velmi obtížné zpracovat. Nemůžeme se jen podívat na řetězce 0 a 1 je a nutně vědět, přesně to, co to je. Ale je to ještě užitečné mít možnost expresní údaje stejným způsobem že počítač dělá. Máme tento pojem z hexadecimální systém, který je základna 16, místo toho, báze 10 nebo základní 2. Což znamená, že budeme mít 16 číslic pracovat s místo 10 nebo 2. A je to mnohem víc stručné způsob, jak vyjádřit binární informace o počítačovém systému, je to mnohem lidštější pochopitelné. Takže máme číslice 0 až 9, a poté máme také tyto další šest digits-- si, b, c, d, e, a f, která představují 10, náš pojem 10, 11, 12, 13, 14 a 15, v desítkové soustavě. Někdy, mimochodem, budete i vy vidět tyto a až f jako kapitálové A až F, což je způsob, jak mám tendenci dělat. Je to jen můj přednostní styl, ale buď je v pořádku, obě představují docela to samé. Tak proč je hexadecimální v pohodě? Proč musíme použít další dodatečné základna? Máme už 2 a 10, proč potřebujeme 16? No 16 je síla 2, a tak každý hexadecimální číslice, 0 až f, odpovídá jedinečný uspořádání, nebo jedinečné uspořádání 4 binárních čísel, 4 bity. A tak se v tomto smyslu, můžeme vyjádřit velmi dlouhé, komplexní, binární čísla v šestnáctkové soustavě v A mnohem stručnější způsob, bez ztráty informací nebo mají na dělat zejména neskladné konverze Na těchto čísel. Takže, jak jsem právě řekl, každý hexadecimální číslice odpovídá jedinečný uspořádání 4 binárních čísel. Takže na binární řetězec 0000 odpovídá hexadecimální znak 0. 0110 odpovídá šestnáctkové číslice 6. A 1111 odpovídá šestnáctkové číslice f. Pokud jste při pohledu na tento graf, zvláště pokud jste při pohledu na levá strana grafu, můžete již vidět, že je to bit z problému nejednoznačnosti zde. Desetinné 0 je do značné míry k nerozeznání od hexadecimální 0, jiný než skutečnost, že je to v rámci sloupec, který říká, že hexadecimální. Ale asi nebude vždy mít tento sloupec tam. Obecně, když jsme vyjadřování Čísla v šestnáctkové soustavě jasně rozlišit jim v desítkové, obvykle je prefix s předponou 0x. 0x neznamená nic v realitě, je to jen vodítko k nám jako lidé že to, co se chystáme vidět, nebo se chystáte začít rozebrat, je šestnáctkové číslo. Je zřejmé, pro vyšší číslice a, b, c, d, a f, což odpovídá 10-15 je to docela jednoznačné, že je to to je šestnáctkové číslo. A ve skutečnosti, libovolný hexadecimální číslo, které má znaky v tom, je asi docela zřejmé, jako šestnáctkové číslo. Ale přesto, pro Z důvodu srozumitelnosti, je to vždy dobrý nápad prefix pokaždé, když odkazovat na číslici jako hexadecimální Číslo přidáním prefixu 0x. Takže, binární, jako my řekl, má place hodnoty. Je tu ti místo, dvojky místo, čtyřky místo, a osmičky místo. A desítkové má také umístit hodnot, ones, desítky, stovky a tisíce že my všichni si možná vzpomenou, od základní školy. A hexadecimální není Výjimkou zde, opravdu. Má také place hodnoty, ale namísto z toho, že pravomoci 2 nebo síly 10, jsou to síly 16. Tak jsme vidět řadu jako je tato, docela jasně vím, že je 397, ne? No, pokud vidíme čísla jako je tento, víme, že to není 397 už ne. Toto je hexadecimální číslo tři devět sedm. Není to 397, znamená to, Něco odlišného, proto, že jsme s použitím síly 16, jak vše našeho místa hodnot namísto pravomocí 10. Ve skutečnosti, zde by se místo hodnoty být těmi, místo je sixteens místo, a dvě stě padesát šestky místo, což odpovídá naší myšlence na ty místo, místo desítek a stovek místo, v případě, že jich bylo 397. Ale protože je to 0x 397, máme Ones místo, sixteens místo, a dvě stě padesát šestky místo. Nebo, 16 na 0 místa, což je 1. A 16 na první napájecí místo, 16. A 16 na druhou místo, 256, a tak dále, a tak dále, a tak dále. Takže toto číslo je ve skutečnosti 3 krát 16 čtvercový plus 9 krát 16 plus 7. Nechtěl jsem si to spočítejte tady, ale to není 397, je to mnohem, mnohem větší než to. Stejně tak bychom mohli mít 0x ADC, dobře, že je doba 16 na druhou. Nebo pokud překládáme, že k naší představě desetinných čísel, to je 10 krát 16 čtvercový Plus d krát 16, nebo plus 13 krát 16. A nebojte se, pokud jste nazpaměť že d je 13, nebo něco takového, tam není příliš mnoho z těchto písmen číslic a to bude stát intuitivní docela rychle. Takže znovu To je 10 krát 16 na druhou, a 13 krát 16 plus 12 krát 1. Takže 0x ADC. Takže, jak jsem řekl, každý skupina 4 binárních číslic odpovídá jedinému hexadecimální číslice, a tak to je vlastně opravdu snadno měnit tam a zpět mezi hexadecimální a binární. Pokud máte tento dlouhý řetězec binární číslice, vše, co potřebujete udělat, je začít seskupovat je správná doleva jako skupiny 4. A pak můžete konsolidovat je do čísel šestnáctkové, hrozně omezení počtu Číslice musíte zpracovat psychicky. Místo toho, aby 32 0 a 1 je, jak uvidíme v druhé, byste měli být schopni se dostat dolů na pouhých 8 hexadecimálních číslic, hodně stručnější. Grafy několik zasune zpět bude vám pomůže zjistit, toto mapování, i když, opět budete zapamatovat docela rychle. Projdeme příklad právě teď. Takže pokud máme řadu jako je tento, to opravdu velký binární číslo, nebo to, co se zdá být velké binární číslo. A důvod, proč říkám, že je to Jen tak--, že je to monstrum, že jo? Je tu tolik 0 a 1 je tam. Ale pravděpodobně ne opravdu smysl toho, co Velikost tohoto čísla ve skutečnosti je. Nemáme ponětí, co to by odpovídalo desetinné čárky. A ve skutečnosti jsme se ani vidět, co to odpovídá v desítkové soustavě právě teď. Mohli bychom být schopni vyjádřit to tak, že by nám nějaké bližší informace jen o tom, jak velké je toto číslo. Tak pojďme k tomuto procesu konverze. První věc, kterou musíme musíte udělat, je chceme seskupit Tyto číslice se do skupin 4, od pravé a pracovní doleva. Tam stalo, že se 32 číslic tady, což znamená, že máme pěkný čistý zlom 8 skupin po 4. Pamatujte si, že každou skupinu 4 zde unikátně odpovídá do hexadecimálním kódu. Takže začneme znovu budovat naše číslo zprava, a pracovní odešel. No co je 1.101? Tak jsme si to spočítejte v naší hlavě, máme 1 v osmý místě, 1 na místě čtyřech, s 0 v dvojky místo a 1. místo v ones místě. To je 8 plus 4 plus 1, které bychom vědět, jak 13. Ale pravděpodobně nebude psát 13 out, protože pracujeme s hexadecimální. Musíme převést na šestnáctkové ekvivalent 13, který je d. 0011, dobře, že je to 0 v osmičky místo, 0 na čtyřech místě, 1 v místě po dvou, a 1 na jednotkovou místě. To je 3. Mám na mysli to dělat to opět tu máme 9. A pak 11, ale to je b, odvolání. 2, 10-- nebo je-- 6, a 4. A tak, že velmi velký řetězec z 0 a 1 letech na vrchol Je výstižněji vyjádřeno v šestnáctkové soustavě jako 0x 46a2b93d. No, OK, jsme se naučili nové pohodě dovednost, jaký to má smysl? Mohli bychom to použít všechny čas, jak budeme brzy vidět, používáme šestnáctkové docela hodně jako programátoři. Ne nutně pro Účelem tím matematiku s tím, ale protože mnohokrát paměťové adresy v našem systému jsou zastoupeny v šestnáctkové soustavě. Je to opravdu stručný způsob, jak vyjádřit jinak těžkopádné, binární čísla. A tak opět, může se ne-- jste pravděpodobně nebude dělat žádné matematiku s tím, že nejste Bude násobení hexadecimální čísla dohromady, nebo dělat něco divně takhle. Ale je užitečná dovednost mít takže si můžete vyjadřovat a chápat paměť adresy, a další způsoby s použitím dat v C. Jsem Doug Lloyd, je to CS50.