DOUG LLYOYD: So hexadecimal numero, bilang kung kailangan namin ng isa pang base number scheme right? Well, karamihan sa Western kultura, habang ikaw ay malamang ay pamilyar, gamitin ang mga decimal system-- base 10, na kumakatawan sa data ng numero. Mayroon kaming ang mga digit na 0, 1, 2, 3, 5, 6, 7,8,9. At kung kailangan namin upang kumatawan mga halaga na mas mataas kaysa sa siyam, maaari naming pagsamahin ang mga digit gamit ang paniwala ng mga lugar na halaga. Kaya para sa 10, mayroon kaming isang 1 digit na sinusundan ng isang 0 digit at intuitively maunawaan natin na kung anong ginagawa namin doon ay kami ay pagpaparami ang unang 1 sa 10, at pagkatapos ay pagdaragdag ng 0 para sa kabuuan na 10. Computers gawin ang isang bagay pretty katulad, bilang ikaw ay malamang na pamilyar, sa binary system-- base 2. Ang pagkakaiba ng pagiging may na digit lamang 2 upang gumana with-- 0 at 1. At sa gayon ang aming mga halaga ng lugar, sa halip ng pagiging isa, sampung, daang, libo, habang ang mga ito ay magiging sa decimal system, ay isa, dalawa, apat, walo, at iba pa. Narito ang bagay bagaman, mga 0 at 1, lalo na kung kami ay pagiging siyentipiko computer at kami ay gumagawa ng isang pulutong ng mga programa o nagtatrabaho sa mga computer, ay pagpunta na nakakakita ng isang pulutong ng mga binary numero. At yaong 0 at 1 sa malaking chains ay maaaring maging lubhang mahirap na i-parse. Hindi lamang namin maaaring tumingin sa isang string ng mga 0 at 1 at kinakailangang malaman kung ano mismo ang ito ay. Ngunit ito ay kapaki-pakinabang pa rin para ma express data sa parehong paraan na ang isang computer ay. Mayroon kaming ang paniwala na ito ng hexadecimal system, na kung saan ay base 16, sa halip na base 10 o base 2. Na nangangahulugan na kami ay may 16 digit upang gumana sa halip ng 10 o 2. At ito ay isang mas maigsi na paraan upang ipahayag ang binary impormasyon sa isang computer system, ito ay mas pantao maliwanag. Kaya mayroon kaming ang mga digit 0 hanggang 9, at pagkatapos ay kami ay mayroon din ng mga dagdag na anim na digits-- a, b, c, d, e, at f, na kumakatawan sa 10, aming paniwala ng 10, 11, 12, 13, 14 at 15, sa decimal. Minsan, sa daan, makikita din sa iyo makita ang mga ito ng isang sa pamamagitan ng f bilang capital A sa pamamagitan ng F, na siyang paraan ako ay madalas na gawin ito. Ito lang ang aking mga ginustong estilo, ngunit alinman ay pinong, sila parehong kumakatawan pretty magkano ang parehong bagay. Kaya bakit hexadecimal cool? Bakit kailangan namin upang gamitin ang iba pang mga karagdagang base? Kami ay mayroon ng 2 at 10, bakit kailangan namin ng 16? Well 16 ay isang kapangyarihan ng 2, at iba bawat hexadecimal digit, 0 hanggang f, ay kumakatawan sa isang natatanging pag-order, o natatanging arrangement ng 4 binary digits, 4 bits. At kaya sa na kahulugan, maaari naming ipahayag ang masyadong mahaba, kumplikadong, binary numero sa hexadecimal sa isang mas maigsi paraan, nang hindi nawawala ang impormasyon o pagkakaroon ng gawin lalo nakakabahala conversion sa mga numero. Kaya, tulad ng sinabi ko lang, bawat hexadecimal digit ay kumakatawan sa isang natatanging arrangement of 4 binary digits. Kaya ang binary string 0000 tumutugon sa hexadecimal digit 0. 0110 ay tumutugon sa hexadecimal digit 6. At 1111 tumutugon sa hexadecimal digit f. Kung ikaw ay naghahanap sa tsart na ito, lalo na kung ikaw ay naghahanap sa kaliwang bahagi ng chart, maaari mong makita na mayroong isang piraso ng isang problema kalabuan dito. Decimal 0 ay medyo marami hindi makilala mula sa hexadecimal 0, maliban sa ang katunayan na ito ay sa ilalim ng ang isang haligi na nagsasabing hexadecimal. Ngunit marahil hindi kami palaging Mayroon hanay na iyon doon. Karaniwan kapag kami ay pagpapahayag numero sa hexadecimal notasyon upang malinaw na makilala ito mula sa decimal notasyon, kami ay karaniwang prefix sa kanila may prefix 0 x. 0 x wala sa katotohanan ay nangangahulugan na, ito ay isang palatandaan lamang upang amin bilang mga tao na kung ano ang hindi namin tungkol sa upang makita, o tungkol sa upang simulan ang pag-parse, ay isang numero ng hexadecimal. Malinaw na para sa mas mataas na numero ay a, b, c, d, at f, na tumutugma sa 10-15 ito ay medyo malabo na na isang bilang hexadecimal. At sa katunayan, ang anumang mga hexadecimal number na may mga titik sa loob nito, ay marahil medyo maliwanag bilang hexadecimal numero. Ngunit, pa rin, para sa mga kapakanan ng kaliwanagan, ito ay palaging isang magandang ideya na prefix sa bawat oras na sumangguni sa isang digit bilang hexadecimal number sa pamamagitan ng prefixing isang 0x. Kaya, binary, bilang namin sinabi, ay may mga halaga ng lugar. Mayroong ang lugar na iyan, isang lugar twos, isang lugar nakadapa, at isang tag walo lugar. At decimal din ay may mga halaga ng lugar, ang mga bago, sampu-sampung, daan-daan, at libo-libo na maaari naming ang lahat ng pagpapabalik mula sa mababang paaralan. At hexadecimal ay walang exception dito, talaga. Ito rin ay may mga halaga ng lugar ngunit sa halip ng pagiging kapangyarihan ng 2 o mga kapangyarihan ng 10, ang mga ito ay mga kapangyarihan ng 16. Kaya nakikita natin ang isang numero tulad nito tayo pretty malinaw na malaman ito ay 397, di ba? Well kung makita namin ang isang bilang tulad nito, alam namin na ito ay hindi 397 anymore. Ito ang hexadecimal numero ng tatlong-siyam-pito. Ito ay hindi 397, ang ibig sabihin nito isang bagay na naiiba, dahil kami ay gumagamit ng mga kapangyarihan ng 16 na rin ang lahat ng aming mga halaga ng lugar sa halip ng kapangyarihan of 10. Sa katunayan, ang mga halaga ng lugar dito gagawin ang lugar na iyan, ang lugar sixteens, at ang dalawang-daang-limampu't magkasundu lugar, na tumutugma sa aming mga ideya ng isang buhay lugar, lugar ng sampu, at isang daang lugar, kung ang bilang ay 397. Ngunit dahil ito ay 0 x 397, kami ay isang buhay na lugar na lugar, sixteens, at isang dalawang-daang-limampu't magkasundu lugar. O, isang 16 sa 0 lugar, kung saan ay 1. Ang isang 16 na ang unang kapangyarihan na lugar, 16. Ang isang 16 nakalapat na lugar, 256, at iba pa, at iba pa, at iba pa. Kaya ang bilang na ito ay talagang 3 beses 16 nakalapat, plus 9 times 16, plus 7. Hindi ko gawin ang matematika dito, ngunit ito ay hindi 397, ito ay marami, higit na mas malaki kaysa sa na. Katulad nito, maaari kaming magkaroon ng 0x adc, mabuti na ang isang beses na 16 nakalapat. O kung isalin natin na sa aming paniwala ng mga numero ng decimal, na 10 beses 16 nakalapat, plus d beses 16, o plus 13 beses 16. At huwag mag-alala kung hindi mo kabisado na d ay 13, o anumang bagay tulad na, may hindi masyadong maraming mga titik na digit at makikita ito maging intuitive medyo mabilis. Kaya muli na ito ay 10 beses 16 nakalapat, plus 13 beses 16, plus 12 ulit 1. Kaya 0 x adc. Kaya, tulad ng sinabi ko, ang bawat grupo ng 4 binary digits tumutugma sa isang solong hexadecimal digit, at sa gayon ito ay aktwal na talagang madaling baguhin lipat pagitan ng hex at binary. Kung mayroon kang mga ito mahabang string ng mga binary digits, ang lahat ng kailangan mong gawin ay magsisimula pagpapangkat ng mga ito karapatan sa kaliwa bilang mga grupo ng 4. At pagkatapos ay maaari mong pag-isahin ang mga ito sa mga numero ng hexadecimal, malubhang nililimitahan ang bilang ng mga digits mayroon ka upang i-proseso sa pag-iisip. Sa halip na 32 0 at 1, dahil kakailanganin namin makita sa isang segundo, maaaring ikaw ay maaaring makakuha ng ito pababa hanggang 8 lang hexadecimal digit, isang pulutong mas maigsi. Ang mga chart ng ilang mga slide-back ay makakatulong sa iyo upang malaman kung ito mapping, bagaman, muli makikita mo kabisaduhin ito medyo mabilis. Kami ay pumunta sa pamamagitan ng isang halimbawa ngayon. Kaya kung kami ay may isang numero na ito, ito ay talagang malaking binary na numero, o kung ano ang ay lilitaw upang maging isang malaking binary number. At ang dahilan kung bakit sinasabi ko na, ito ay lamang so-- ito ay isang behemoth, di ba? Mayroong maraming mga 0 at 1 doon. Ngunit marahil kami ay hindi talagang magkaroon ng isang katinuan kung ano ang kalakhan ng mga numero na ito ay tunay. Wala kaming anumang mga ideya kung ano ito ay tumutugma sa isang decimal. At sa katunayan namin ay hindi kahit na makita kung ano ito tumutugon sa sa decimal ngayon. Maaari naming magagawang upang ipahayag ito sa isang paraan na bigyan kami ng ilang mga karagdagang impormasyon lamang tungkol sa kung paano malaki ang bilang na ito ay. Kaya sabihin pumunta sa na proseso ng conversion. Ang unang bagay na kailangan namin gawin ay gusto naming grupo mga numero ay out sa mga grupo ng 4, na nagsisimula mula sa kanan at nagtatrabaho sa kaliwa. May mangyari na 32 digit dito, na nangangahulugan na namin isang magandang malinis break ng 8 mga grupo ng 4. Tandaan na ang bawat pangkat ng 4 dito, katangi tumutugma sa isang hexadecimal digit. Kaya makikita namin simulan muli gusali ng aming number mula sa kanan, at kaliwa nagtatrabaho. Well kung ano ang 1101? Well ginagawa namin ang matematika sa ating ulo, kami ay may 1 sa lugar eights, ang isang 1 sa lugar nakadapa, isang 0 sa twos lugar, at 1 sa lugar na iyan. Iyan ay 8 plus 4 plus 1, kung saan nais naming malaman bilang 13. Ngunit kami ay hindi malamang na magsulat 13 out, dahil kami ay nagtatrabaho sa hexadecimal. Kailangan namin upang i-convert ito sa hexadecimal katumbas ng 13, na kung saan ay d. 0011, mabuti na ang isang 0 sa eights lugar, isang 0 sa lugar nakadapa, isang 1 sa lugar twos, at 1 sa lugar na iyan. Iyan ay 3. Ibig sabihin ko panatilihin ang paggawa nito muli, mayroon kami dito 9. At pagkatapos ay 11, ngunit iyan ay b, pagpapabalik. 2, 10-- o a-- 6, at 4. At upang ang napakalaking string ng 0 at 1 ng tuktok ay mas maigsi ipinahayag sa hexadecimal bilang 0x 46a2b93d. Well, OK, aming natutunan ng isang bagong cool na kasanayan, kung ano ang punto? Maaaring hindi namin gamitin ito sa lahat ng panahon, bilang namin ang pagpunta sa lalong madaling panahon makita, ginagamit namin hexadecimal lubos isang pulutong ng mga programmer. Hindi kinakailangan para sa layunin ng paggawa ng matematika sa mga ito, ngunit dahil ang isang pulutong ng mga oras memory address sa aming sistema ay kinakatawan sa hexadecimal. Ito ay isang talagang maigsi na paraan upang ipahayag ang sa kabilang banda nakakabahala, binary numero. At ito, muli, ikaw ay maaaring not-- ikaw ay malamang na hindi pagpunta sa gawin ang anumang matematika sa mga ito, kayo ay hindi magiging pagpaparami hexadecimal numero ng magkasama, o paggawa ng anumang bagay na kakaiba tulad na. Ngunit ito ay isang kapaki-pakinabang na kasanayan upang magkaroon sa gayon maaari mong ipahayag at maunawaan memory address, at iba pang mga paraan ng paggamit ng data sa C. Ako Doug Lloyd, ito ay CS50.