1 00:00:00,000 --> 00:00:05,511 2 00:00:05,511 --> 00:00:08,510 Doug LLYOYD: Entón números hexadecimais, como se precisássemos doutro número base 3 00:00:08,510 --> 00:00:09,970 dereito esquema? 4 00:00:09,970 --> 00:00:13,000 Ben, a maioría das culturas occidentais, como probablemente está familiarizado, 5 00:00:13,000 --> 00:00:16,560 usar a base system-- decimal 10, para representar os datos numéricos. 6 00:00:16,560 --> 00:00:20,520 Temos os díxitos 0, 1, 2, 3, 5, 6, 7,8,9. 7 00:00:20,520 --> 00:00:23,890 E se hai que representar valores superiores a nove, 8 00:00:23,890 --> 00:00:26,800 podemos combinar eses díxitos utilizando a noción de valor local. 9 00:00:26,800 --> 00:00:30,115 Polo tanto, para 10, temos un 1 díxitos seguido dun díxito 0 10 00:00:30,115 --> 00:00:32,240 e nós intuitivamente entender que o que estamos facendo 11 00:00:32,240 --> 00:00:35,500 hai que estamos multiplicando o primeiro 1 por 10, 12 00:00:35,500 --> 00:00:37,689 e, a continuación, engadir 0 durante un total de 10. 13 00:00:37,689 --> 00:00:40,480 Ordenadores facer algo bonito semellante, como probablemente está familiarizado, 14 00:00:40,480 --> 00:00:42,409 coa base system-- binario 2. 15 00:00:42,409 --> 00:00:44,700 A diferenza non ser que hai só dous díxitos 16 00:00:44,700 --> 00:00:46,770 para traballar com-- 0 e 1. 17 00:00:46,770 --> 00:00:49,033 E así os nosos valores de lugar, en vez de ser un, 18 00:00:49,033 --> 00:00:52,600 dez, cen, mil, como sería o sistema decimal, 19 00:00:52,600 --> 00:00:57,690 son un, dous, catro, oito, e así por diante. 20 00:00:57,690 --> 00:01:00,842 Aquí está a cousa, porén, aqueles 0 e 1, especialmente de 21 00:01:00,842 --> 00:01:03,800 se estamos a ser científicos da computación e estamos facendo unha morea de programación 22 00:01:03,800 --> 00:01:06,924 ou traballar con ordenadores, foron indo estar vendo unha morea de números binarios. 23 00:01:06,924 --> 00:01:11,660 E aquelas de 0 e 1 no grandes cadeas pode ser moi difícil de analizar. 24 00:01:11,660 --> 00:01:16,610 Non podemos simplemente ollar a unha serie de 0 e 1 e necesariamente saber 25 00:01:16,610 --> 00:01:17,810 exactamente o que é. 26 00:01:17,810 --> 00:01:21,980 Senón que é útil para poder datos expresados ​​igual 27 00:01:21,980 --> 00:01:23,480 que un ordenador fai. 28 00:01:23,480 --> 00:01:26,580 Temos esa noción da sistema hexadecimal, que é 29 00:01:26,580 --> 00:01:29,840 base 16, no canto de base 10 ou base 2. 30 00:01:29,840 --> 00:01:34,420 O que significa que temos 16 díxitos traballando co máis que 10 ou 2. 31 00:01:34,420 --> 00:01:37,180 E é unha moito máis forma concisa para expresar 32 00:01:37,180 --> 00:01:41,210 información binaria nun sistema informático, é moito máis humana comprensible. 33 00:01:41,210 --> 00:01:43,520 Polo tanto, temos os díxitos De 0 a 9, e despois 34 00:01:43,520 --> 00:01:49,480 temos tamén estes extras seis digits-- un, b, c, d, e, f, as cales representan 10, 35 00:01:49,480 --> 00:01:56,050 nosa noción de 10, 11, 12, 13, 14 e 15, en decimal. 36 00:01:56,050 --> 00:01:59,787 Ás veces, polo camiño, tamén vai vexa estes un medio de F como capital dun 37 00:01:59,787 --> 00:02:01,620 a F, que é a forma que eu tenden a facelo. 38 00:02:01,620 --> 00:02:04,560 É só o meu preferido estilo, pero de calquera é bo, 39 00:02:04,560 --> 00:02:07,870 ambos representan fermosa o mesmo. 40 00:02:07,870 --> 00:02:09,090 >> Entón, por que é legal hexadecimal? 41 00:02:09,090 --> 00:02:11,580 Por que necesitamos usar este outra base adicional? 42 00:02:11,580 --> 00:02:14,310 Nós xa temos 2 e 10, por que necesitamos 16? 43 00:02:14,310 --> 00:02:21,650 Ben 16 é unha potencia de 2, e así cada díxito hexadecimal, de 0 a f, 44 00:02:21,650 --> 00:02:25,440 corresponde a unha única ordenación, ou arranxo orixinal 45 00:02:25,440 --> 00:02:29,060 de 4 díxitos binarios, 4 bits. 46 00:02:29,060 --> 00:02:34,570 E entón, nese sentido, podemos expresar , Números complexos, binarios moi longas 47 00:02:34,570 --> 00:02:36,440 en hexadecimal nunha moi xeito máis concisa, 48 00:02:36,440 --> 00:02:41,080 sen perda de información ou ter que facer conversións particularmente pesados 49 00:02:41,080 --> 00:02:42,480 estas cifras. 50 00:02:42,480 --> 00:02:44,880 >> Entón, como dixen, cada díxito hexadecimal 51 00:02:44,880 --> 00:02:48,630 corresponde a unha única arranxo de 4 díxitos binarios. 52 00:02:48,630 --> 00:02:53,670 Así, a cadea binaria 0000 corresponde ao hexadecimal díxitos 0. 53 00:02:53,670 --> 00:03:00,340 0110 corresponde a 6 díxitos hexadecimal. 54 00:03:00,340 --> 00:03:05,225 E 1111 corresponde para hexadecimal díxitos f. 55 00:03:05,225 --> 00:03:07,100 Se está mirando este gráfico, especialmente 56 00:03:07,100 --> 00:03:09,099 se está mirando para o á esquerda do gráfico, 57 00:03:09,099 --> 00:03:11,970 xa pode ver que hai unha pouco de un problema de ambigüidade aquí. 58 00:03:11,970 --> 00:03:15,229 Decimal 0 é moi fermoso indistinguibles hexadecimal 0, 59 00:03:15,229 --> 00:03:18,020 ademais do feito de que está baixo unha columna que di hexadecimal. 60 00:03:18,020 --> 00:03:22,130 >> Pero probablemente non vai sempre que ten alí columna. 61 00:03:22,130 --> 00:03:25,420 Xeralmente, cando estamos expresando números en notación hexadecimal 62 00:03:25,420 --> 00:03:28,130 distinguir claramente los de notación decimal, 63 00:03:28,130 --> 00:03:31,860 nós xeralmente prefixo los co prefixo 0x. 64 00:03:31,860 --> 00:03:35,990 0x significa nada, en realidade, é só unha pista para nós como seres humanos 65 00:03:35,990 --> 00:03:39,190 que o que estamos a piques de ver, ou a piques de comezar a análise, 66 00:03:39,190 --> 00:03:40,750 é un número hexadecimal. 67 00:03:40,750 --> 00:03:45,590 Obviamente, para os díxitos máis elevados, b, c, d, e, f, o que corresponde a 10-15 68 00:03:45,590 --> 00:03:48,840 é moi inequívoca que é que é un número hexadecimal. 69 00:03:48,840 --> 00:03:51,620 E, de feito, calquera hexadecimal número que ten cartas na mesma, 70 00:03:51,620 --> 00:03:54,642 pode ser bastante obvio como un número hexadecimal. 71 00:03:54,642 --> 00:03:56,350 Pero, aínda así, para o razóns de claridade, é 72 00:03:56,350 --> 00:03:58,290 sempre unha boa idea prefixar cada vez que 73 00:03:58,290 --> 00:04:01,835 refírense a un díxito como hexadecimal número prefixando un 0x. 74 00:04:01,835 --> 00:04:04,370 75 00:04:04,370 --> 00:04:06,810 >> Entón, binario, coma nós dixo, ten valores de lugar. 76 00:04:06,810 --> 00:04:10,040 Hai o lugar queridos, un lugar dous, un lugar de catro, e un lugar oitos. 77 00:04:10,040 --> 00:04:13,640 E tamén ten lugar decimal valores, os unidades, decenas, centos e miles 78 00:04:13,640 --> 00:04:15,910 que todos pode lembrar da escola de clase. 79 00:04:15,910 --> 00:04:18,050 E hexadecimal hai excepción aquí, realmente. 80 00:04:18,050 --> 00:04:22,660 Tamén ten valores de lugar, pero en vez de ser potencias de 2 ou potencias de 10, 81 00:04:22,660 --> 00:04:25,050 son potencias de 16. 82 00:04:25,050 --> 00:04:29,410 >> Así, vemos un número como este nós sabe moi claramente que é 397, non? 83 00:04:29,410 --> 00:04:33,420 Ben, se vemos un número como este, sabemos que iso non é 397 máis. 84 00:04:33,420 --> 00:04:36,730 Este é o hexadecimal número de tres 9-7. 85 00:04:36,730 --> 00:04:39,680 Non é 397, isto significa algo diferente, 86 00:04:39,680 --> 00:04:44,180 porque estamos a usar os poderes de 16 como todo dos nosos valores lugar, en vez de poderes 87 00:04:44,180 --> 00:04:45,560 de 10. 88 00:04:45,560 --> 00:04:50,570 De feito, os valores de lugar aquí faría ser o lugar máis, o lugar sixteens, 89 00:04:50,570 --> 00:04:55,080 eo lugar de dous-douscentos cincuenta e seis, que corresponde á nosa idea dun queridos 90 00:04:55,080 --> 00:04:59,180 lugar, decenas lugar, e unha centos lugar, o número foi de 397. 91 00:04:59,180 --> 00:05:03,620 Pero xa que é 0x 397, temos un lugar queridos lugar, sixteens, 92 00:05:03,620 --> 00:05:05,780 e un lugar de dous-douscentos cincuenta e seis. 93 00:05:05,780 --> 00:05:09,460 Ou, un 16 a 0 o lugar, que é un. 94 00:05:09,460 --> 00:05:12,420 A 16 de primeiro de enerxía, 16. 95 00:05:12,420 --> 00:05:17,080 A 16 cadrado lugar, 256, e etc., etc., e así por diante. 96 00:05:17,080 --> 00:05:24,400 Entón este número é realmente 3 veces 16 cadrado, máis 9 veces 16, sete. 97 00:05:24,400 --> 00:05:28,980 Non facer a matemática aquí, pero non é 397, é moi, moito maior que iso. 98 00:05:28,980 --> 00:05:34,050 >> Do mesmo xeito, poderiamos ADC 0x, ben que é un veces 16 ao cadrado. 99 00:05:34,050 --> 00:05:38,220 Ou traducir isto para a nosa noción de números decimais, que é 10 veces 100 00:05:38,220 --> 00:05:44,160 16 ao cadrado, ademais d veces 16, ou máis de 13 veces 16. 101 00:05:44,160 --> 00:05:47,410 E non se preocupe se non ten memorizado que d é 13, ou algo así, 102 00:05:47,410 --> 00:05:49,201 non hai moitos destes díxitos tipográfica 103 00:05:49,201 --> 00:05:52,820 e que vai facer intuitivo moi rapidamente. 104 00:05:52,820 --> 00:05:59,800 Entón, de novo este é 10 veces 16 ao cadrado, ademais de 13 veces 16, máis 12 veces 1. 105 00:05:59,800 --> 00:06:03,640 ADC Entón 0x. 106 00:06:03,640 --> 00:06:07,750 >> Entón, como dixen, todo grupo de 4 díxitos binarios 107 00:06:07,750 --> 00:06:10,000 corresponde a unha única díxito hexadecimal, 108 00:06:10,000 --> 00:06:12,570 e por iso é realmente moi doado de cambiar adiante e cara atrás 109 00:06:12,570 --> 00:06:14,690 entre hexadecimal e binario. 110 00:06:14,690 --> 00:06:18,310 Se ten esa longa secuencia de díxitos binarios, todo o que precisa facer 111 00:06:18,310 --> 00:06:21,320 é comezar agrupándose dereita á esquerda como grupos de 4. 112 00:06:21,320 --> 00:06:26,550 E entón podes consolidar Los en números hexadecimais, 113 00:06:26,550 --> 00:06:30,910 limitando severamente o número de díxitos tes que procesar mentalmente. 114 00:06:30,910 --> 00:06:33,680 No canto de 32 0 e 1s, como veremos nun segundo, 115 00:06:33,680 --> 00:06:37,630 pode ser capaz de obtelo para abaixo a só 8 díxitos hexadecimais, unha morea 116 00:06:37,630 --> 00:06:39,200 máis concisa. 117 00:06:39,200 --> 00:06:43,500 >> Os gráficos de algúns diapositivas volta vai axudar a descubrir ese mapeamento, 118 00:06:43,500 --> 00:06:45,660 aínda que, de novo vai lembra-lo moi rapidamente. 119 00:06:45,660 --> 00:06:47,320 Nós imos pasar por un exemplo agora. 120 00:06:47,320 --> 00:06:51,507 Entón, se temos un número como este, este realmente grande número binario, 121 00:06:51,507 --> 00:06:53,340 ou o que parece ser un gran número binario. 122 00:06:53,340 --> 00:06:56,260 E a razón de eu dicir isto, é só assim-- é un xigante, non? 123 00:06:56,260 --> 00:06:58,959 Hai tantos 0 e 1 de alí. 124 00:06:58,959 --> 00:07:01,000 Pero probablemente non facer realmente ter unha noción do que 125 00:07:01,000 --> 00:07:02,870 a magnitude deste número realmente é. 126 00:07:02,870 --> 00:07:06,150 Non temos nin idea do que correspondería a unha casa decimal. 127 00:07:06,150 --> 00:07:09,744 E, de feito, non vai mesmo ver que corresponde a en decimal neste momento. 128 00:07:09,744 --> 00:07:11,660 Poderiamos ser capaces de expresar isto dun xeito que 129 00:07:11,660 --> 00:07:15,640 nos daría un pouco máis de información sobre o quão grande ese número é. 130 00:07:15,640 --> 00:07:17,270 >> Entón imos para o proceso de conversión. 131 00:07:17,270 --> 00:07:19,311 O primeiro que temos que que facer é que queremos grupo 132 00:07:19,311 --> 00:07:23,050 eses díxitos para fóra en grupos 4, a partir da dereita 133 00:07:23,050 --> 00:07:24,120 e traballar á esquerda. 134 00:07:24,120 --> 00:07:27,260 Acontece que hai 32 díxitos aquí, o que significa que temos 135 00:07:27,260 --> 00:07:33,210 unha pausa agradable limpo de 8 grupos de catro. 136 00:07:33,210 --> 00:07:36,200 Lembre que cada grupo de 4 aquí, única corresponde 137 00:07:36,200 --> 00:07:37,760 a un díxito hexadecimal. 138 00:07:37,760 --> 00:07:42,080 Entón, imos comezar de novo a construír a nosa número de dereita e traballando esquerda. 139 00:07:42,080 --> 00:07:44,890 Ben, o que é 1101? 140 00:07:44,890 --> 00:07:49,220 Ben, facer a matemática para fóra na nosa cabeza, temos un no lugar oitos, a 1 141 00:07:49,220 --> 00:07:54,310 no lugar de catro, un 0 nos pares lugar, e un 1 na casa das unidades. 142 00:07:54,310 --> 00:07:58,820 Isto é 8 + 4 + 1, que saberiamos como 13. 143 00:07:58,820 --> 00:08:02,400 Pero probablemente non ía escribir en 13º, porque estamos a traballar con hexadecimal. 144 00:08:02,400 --> 00:08:07,982 Necesitamos convertelo para o hexadecimal equivalente a 13, o cal é d. 145 00:08:07,982 --> 00:08:12,940 >> 0011, así, iso é un 0 no lugar oitos, un 0 en catro lugar, 146 00:08:12,940 --> 00:08:15,190 a 1 no lugar dous, e un 1 na casa das unidades. 147 00:08:15,190 --> 00:08:16,880 Iso é 3. 148 00:08:16,880 --> 00:08:20,180 Quero dicir continuar facendo iso de novo, temos aquí 9. 149 00:08:20,180 --> 00:08:23,850 E despois de 11, pero iso é b, recall. 150 00:08:23,850 --> 00:08:30,570 2, 10-- ou um-- 6, e 4. 151 00:08:30,570 --> 00:08:34,669 E así que moi grande cadea de 0 e 1. de arriba 152 00:08:34,669 --> 00:08:38,549 é máis concisamente emitidos en hexadecimal como 0x 46a2b93d. 153 00:08:38,549 --> 00:08:42,309 154 00:08:42,309 --> 00:08:45,870 >> Ben, ben, aprendemos un novo habilidade legal, cal é o punto? 155 00:08:45,870 --> 00:08:49,560 Non podería usar isto o tempo, como veremos en breve, 156 00:08:49,560 --> 00:08:52,370 usamos hexadecimal bastante moi como programadores. 157 00:08:52,370 --> 00:08:55,060 Non necesariamente para o propósito de facer matemáticas con el, 158 00:08:55,060 --> 00:08:58,470 senón porque unha morea de veces enderezos de memoria no noso sistema 159 00:08:58,470 --> 00:09:00,440 son representados en hexadecimal. 160 00:09:00,440 --> 00:09:04,390 É realmente unha forma concisa para expresar se non pesados, números binarios. 161 00:09:04,390 --> 00:09:06,440 E así, unha vez máis, pode não-- probablemente está 162 00:09:06,440 --> 00:09:07,640 non vai facer calquera matemáticas con el, non está 163 00:09:07,640 --> 00:09:09,848 será multiplicando números hexadecimais en conxunto, 164 00:09:09,848 --> 00:09:11,770 ou facer calquera cousa estraña así. 165 00:09:11,770 --> 00:09:16,120 Pero é unha habilidade útil para ter para que poida expresar e entender 166 00:09:16,120 --> 00:09:23,290 memoria enderezos e outras usando formas de datos en C. 167 00:09:23,290 --> 00:09:26,240 >> Eu son Doug Lloyd, este é CS50. 168 00:09:26,240 --> 00:09:28,028