1 00:00:00,000 --> 00:00:05,511 2 00:00:05,511 --> 00:00:08,510 DOUG LLYOYD: números hexadecimales Así, como si necesitábamos otro número base 3 00:00:08,510 --> 00:00:09,970 derecho esquema? 4 00:00:09,970 --> 00:00:13,000 Bueno, la mayoría de las culturas occidentales, como usted probablemente está familiarizado, 5 00:00:13,000 --> 00:00:16,560 utilizar la base system-- decimal 10, para representar datos numéricos. 6 00:00:16,560 --> 00:00:20,520 Tenemos los dígitos 0, 1, 2, 3, 5, 6, 7,8,9. 7 00:00:20,520 --> 00:00:23,890 Y si tenemos que representar valores superiores a nueve, 8 00:00:23,890 --> 00:00:26,800 podemos combinar esos dígitos utilizando el concepto de valor posicional. 9 00:00:26,800 --> 00:00:30,115 Así que por 10, tenemos un 1 dígitos seguido de un 0 dígitos 10 00:00:30,115 --> 00:00:32,240 y que intuitivamente entendemos que lo que estamos haciendo 11 00:00:32,240 --> 00:00:35,500 no estamos multiplicando la primera 1 por 10, 12 00:00:35,500 --> 00:00:37,689 y luego añadiendo 0 para un total de 10. 13 00:00:37,689 --> 00:00:40,480 Computadoras hacer algo bonito similar, ya que probablemente esté familiarizado, 14 00:00:40,480 --> 00:00:42,409 con la base 2 system-- binario. 15 00:00:42,409 --> 00:00:44,700 La diferencia que exista que hay sólo 2 dígitos 16 00:00:44,700 --> 00:00:46,770 para trabajar con-- 0 y 1. 17 00:00:46,770 --> 00:00:49,033 Y para que nuestros valores de lugar, en lugar de ser uno, 18 00:00:49,033 --> 00:00:52,600 diez, cien, mil, ya que sería en el sistema decimal, 19 00:00:52,600 --> 00:00:57,690 son uno, dos, cuatro, ocho, y así sucesivamente. 20 00:00:57,690 --> 00:01:00,842 Aquí está la cosa, sin embargo, aquellos de 0 y 1, en especial de 21 00:01:00,842 --> 00:01:03,800 si estamos siendo los informáticos y estamos haciendo un montón de programación 22 00:01:03,800 --> 00:01:06,924 o trabajar con ordenadores, íbamos estar viendo un montón de números binarios. 23 00:01:06,924 --> 00:01:11,660 Y los de de 0 y 1 en las grandes cadenas puede ser muy difícil de analizar. 24 00:01:11,660 --> 00:01:16,610 No podemos mirar a una serie de 0 de 1 y de y necesariamente saber 25 00:01:16,610 --> 00:01:17,810 exactamente lo que es. 26 00:01:17,810 --> 00:01:21,980 Pero aún así es útil poder datos expresos de la misma manera 27 00:01:21,980 --> 00:01:23,480 que hace una computadora. 28 00:01:23,480 --> 00:01:26,580 Tenemos esta idea de la sistema hexadecimal, que es 29 00:01:26,580 --> 00:01:29,840 base 16, en lugar de la base 10 o la base 2. 30 00:01:29,840 --> 00:01:34,420 Lo que significa que tenemos 16 dígitos para trabajar con en lugar de 10 o 2. 31 00:01:34,420 --> 00:01:37,180 Y es una mucho más forma concisa de expresar 32 00:01:37,180 --> 00:01:41,210 información binaria en un sistema informático, es mucho más humano comprensible. 33 00:01:41,210 --> 00:01:43,520 Así que tenemos los dígitos Del 0 al 9, y luego 34 00:01:43,520 --> 00:01:49,480 también tenemos éstos adicional de seis digits-- una, b, c, d, e, y f, que representan 10, 35 00:01:49,480 --> 00:01:56,050 nuestra noción de 10, 11, 12, 13, 14 y 15, en decimal. 36 00:01:56,050 --> 00:01:59,787 A veces, por cierto, usted también ver éstos el pase de f como mayúscula 37 00:01:59,787 --> 00:02:01,620 a través de F, que es el como yo tiendo a hacerlo. 38 00:02:01,620 --> 00:02:04,560 Es sólo mi preferido estilo, pero tampoco está bien, 39 00:02:04,560 --> 00:02:07,870 ambos representan bastante lo mismo. 40 00:02:07,870 --> 00:02:09,090 >> ¿Por qué es fresco hexadecimal? 41 00:02:09,090 --> 00:02:11,580 ¿Por qué necesitamos para utilizar este otra base adicional? 42 00:02:11,580 --> 00:02:14,310 Ya tenemos 2 y 10, ¿por qué necesitamos 16? 43 00:02:14,310 --> 00:02:21,650 Bueno 16 es una potencia de 2, y así cada dígito hexadecimal, 0 a f, 44 00:02:21,650 --> 00:02:25,440 corresponde a un único ordenar, o disposición única 45 00:02:25,440 --> 00:02:29,060 de 4 dígitos binarios, 4 bits. 46 00:02:29,060 --> 00:02:34,570 Y así, en ese sentido, podemos expresar muy largos, números binarios y complejos 47 00:02:34,570 --> 00:02:36,440 en hexadecimal en una tanto de manera más concisa, 48 00:02:36,440 --> 00:02:41,080 sin perder información o tener que hacer conversiones particularmente engorrosos 49 00:02:41,080 --> 00:02:42,480 en esos números. 50 00:02:42,480 --> 00:02:44,880 >> Así que, como acabo de decir, cada dígito hexadecimal 51 00:02:44,880 --> 00:02:48,630 corresponde a un único disposición de 4 dígitos binarios. 52 00:02:48,630 --> 00:02:53,670 Así que la cadena binaria 0000 corresponde al dígito hexadecimal 0. 53 00:02:53,670 --> 00:03:00,340 0110 corresponde al dígito hexadecimal 6. 54 00:03:00,340 --> 00:03:05,225 Y 1111 corresponde a hexadecimal dígitos f. 55 00:03:05,225 --> 00:03:07,100 Si usted está buscando en este gráfico, en particular 56 00:03:07,100 --> 00:03:09,099 si usted está buscando en el lado izquierdo de la tabla, 57 00:03:09,099 --> 00:03:11,970 ya se puede ver que hay una poco de un problema de ambigüedad aquí. 58 00:03:11,970 --> 00:03:15,229 Decimal 0 es más o menos indistinguible de hexadecimal 0, 59 00:03:15,229 --> 00:03:18,020 aparte del hecho de que es bajo una columna que dice hexadecimal. 60 00:03:18,020 --> 00:03:22,130 >> Pero probablemente no lo hará siempre tener esa columna allí. 61 00:03:22,130 --> 00:03:25,420 En general, cuando estamos expresando números en notación hexadecimal 62 00:03:25,420 --> 00:03:28,130 distinguir claramente desde la notación decimal, 63 00:03:28,130 --> 00:03:31,860 que por lo general les anteponemos con el prefijo 0x. 64 00:03:31,860 --> 00:03:35,990 0x no significa nada en la realidad, es sólo una pista para nosotros como seres humanos 65 00:03:35,990 --> 00:03:39,190 que lo que estamos a punto de ver, oa punto de comenzar el análisis, 66 00:03:39,190 --> 00:03:40,750 es un número hexadecimal. 67 00:03:40,750 --> 00:03:45,590 Obviamente para los dígitos más altos a, b, c, d, y f, que corresponden 10-15 68 00:03:45,590 --> 00:03:48,840 es bastante ambigua que es eso es un número hexadecimal. 69 00:03:48,840 --> 00:03:51,620 Y de hecho, cualquier hexadecimal número que tiene las letras en el mismo, 70 00:03:51,620 --> 00:03:54,642 es probablemente bastante obvio como un número hexadecimal. 71 00:03:54,642 --> 00:03:56,350 Pero, aún así, para la aras de la claridad, es 72 00:03:56,350 --> 00:03:58,290 siempre es una buena idea prefijo cada vez que 73 00:03:58,290 --> 00:04:01,835 referirse a un dígito hexadecimal como una número anteponiendo un 0x. 74 00:04:01,835 --> 00:04:04,370 75 00:04:04,370 --> 00:04:06,810 >> Así, binario, como hemos Dicho esto, tiene valores de lugar. 76 00:04:06,810 --> 00:04:10,040 Ahí está el lugar de las unidades, un lugar de dos en dos, un lugar a cuatro patas, y un lugar ochos. 77 00:04:10,040 --> 00:04:13,640 Y decimal también tiene lugar los valores, las unidades, decenas, cientos y miles 78 00:04:13,640 --> 00:04:15,910 que todos podamos recordar desde la escuela primaria. 79 00:04:15,910 --> 00:04:18,050 Y hexadecimal hay excepción aquí, de verdad. 80 00:04:18,050 --> 00:04:22,660 También cuenta con valores de lugar, pero en lugar de ser potencias de 2 o potencias de 10, 81 00:04:22,660 --> 00:04:25,050 que son potencias de 16. 82 00:04:25,050 --> 00:04:29,410 >> Así que vemos una serie como esta nos bastante claramente sabe que es 397, ¿verdad? 83 00:04:29,410 --> 00:04:33,420 Bueno, si vemos una serie como esta, sabemos que esto no es 397 más. 84 00:04:33,420 --> 00:04:36,730 Este es el hexadecimal número tres-nueve-siete. 85 00:04:36,730 --> 00:04:39,680 No es 397, significa algo diferente, 86 00:04:39,680 --> 00:04:44,180 porque estamos utilizando potencias de 16 como todos de nuestros valores de lugar en lugar de poderes 87 00:04:44,180 --> 00:04:45,560 de 10. 88 00:04:45,560 --> 00:04:50,570 De hecho, los valores de lugar aquí haría ser el lugar de las unidades, el lugar sixteens, 89 00:04:50,570 --> 00:04:55,080 y el lugar de doscientos cincuenta y seis, que corresponden a nuestra idea de unos queridos 90 00:04:55,080 --> 00:04:59,180 lugar, decenas lugar, y unos cientos lugar, si el número era de 397. 91 00:04:59,180 --> 00:05:03,620 Pero ya que está 0x 397, tenemos un lugar, los sixteens lugar, 92 00:05:03,620 --> 00:05:05,780 y un lugar de doscientos cincuenta y seis. 93 00:05:05,780 --> 00:05:09,460 O bien, un 16 a la 0 lugar, que es 1. 94 00:05:09,460 --> 00:05:12,420 Un 16 para el primer lugar el poder, 16. 95 00:05:12,420 --> 00:05:17,080 Un 16 cuadrados lugar, 256, y así sucesivamente, y así sucesivamente, y así sucesivamente. 96 00:05:17,080 --> 00:05:24,400 Así que este número es realmente 3 veces 16 cuadrado, además de 9 veces 16, más 7. 97 00:05:24,400 --> 00:05:28,980 Yo no he hecho los cálculos aquí, pero no es 397, que es mucho, mucho más grande que eso. 98 00:05:28,980 --> 00:05:34,050 >> Del mismo modo, podríamos tener adc 0x, así que es un momento 16 al cuadrado. 99 00:05:34,050 --> 00:05:38,220 O si traducimos eso a nuestra noción de los números decimales, eso es 10 veces 100 00:05:38,220 --> 00:05:44,160 16 al cuadrado, más d veces 16 o más 13 veces 16. 101 00:05:44,160 --> 00:05:47,410 Y no te preocupes si no has aprendido de memoria que d es 13, ni nada de eso, 102 00:05:47,410 --> 00:05:49,201 no hay demasiados de estos dígitos de letras 103 00:05:49,201 --> 00:05:52,820 y se convertirá en intuitiva con bastante rapidez. 104 00:05:52,820 --> 00:05:59,800 Así que de nuevo esto es 10 veces 16 al cuadrado, además 13 veces 16, más 12 veces 1. 105 00:05:59,800 --> 00:06:03,640 Adc Así 0x. 106 00:06:03,640 --> 00:06:07,750 >> Así que, como he dicho, cada grupo de 4 dígitos binarios 107 00:06:07,750 --> 00:06:10,000 corresponde a un solo dígito hexadecimal, 108 00:06:10,000 --> 00:06:12,570 y lo que es realmente muy fácil cambiar de ida y vuelta 109 00:06:12,570 --> 00:06:14,690 entre hexadecimal y binario. 110 00:06:14,690 --> 00:06:18,310 Si usted tiene esta larga cadena de dígitos binarios, lo único que tienen que hacer 111 00:06:18,310 --> 00:06:21,320 es empezar a agruparlos derecho a izquierda como grupos de 4. 112 00:06:21,320 --> 00:06:26,550 Y entonces usted puede consolidar en números hexadecimales, 113 00:06:26,550 --> 00:06:30,910 limitando severamente el número de dígitos que tiene que procesar mentalmente. 114 00:06:30,910 --> 00:06:33,680 En lugar de 32 de 0 y de 1, como veremos en un segundo, 115 00:06:33,680 --> 00:06:37,630 es posible que pueda conseguirlo abajo a sólo 8 dígitos hexadecimales, mucho 116 00:06:37,630 --> 00:06:39,200 más conciso. 117 00:06:39,200 --> 00:06:43,500 >> Las tablas de algunas diapositivas espalda se le ayudará a averiguar este mapeo, 118 00:06:43,500 --> 00:06:45,660 aunque, de nuevo Usted memorizarlo con bastante rapidez. 119 00:06:45,660 --> 00:06:47,320 Vamos a ir a través de un ejemplo en este momento. 120 00:06:47,320 --> 00:06:51,507 Así que si tenemos una serie como esta, esto realmente gran número binario, 121 00:06:51,507 --> 00:06:53,340 o lo que parece ser un número binario grande. 122 00:06:53,340 --> 00:06:56,260 Y la razón por la que digo eso, es Sólo así que-- es un gigante, ¿no? 123 00:06:56,260 --> 00:06:58,959 Hay tantos de 0 y 1 de allí. 124 00:06:58,959 --> 00:07:01,000 Pero probablemente no lo hacemos realmente tienen un sentido de lo 125 00:07:01,000 --> 00:07:02,870 la magnitud de este número es en realidad. 126 00:07:02,870 --> 00:07:06,150 No tenemos idea de lo que correspondería a un decimal. 127 00:07:06,150 --> 00:07:09,744 Y, de hecho, no vamos a ver hasta qué corresponde en decimal en este momento. 128 00:07:09,744 --> 00:07:11,660 Podríamos ser capaces de expresar esto de una manera que 129 00:07:11,660 --> 00:07:15,640 nos daría algo más de información acerca de lo grande que es este número. 130 00:07:15,640 --> 00:07:17,270 >> Así que vamos a ir a ese proceso de conversión. 131 00:07:17,270 --> 00:07:19,311 La primera cosa que necesitamos que hacer es que queremos grupo 132 00:07:19,311 --> 00:07:23,050 estos dígitos hacia fuera en grupos de 4, comenzando por la derecha 133 00:07:23,050 --> 00:07:24,120 y trabajando hacia la izquierda. 134 00:07:24,120 --> 00:07:27,260 Sucede que hay 32 dígitos aquí, lo que significa que tenemos 135 00:07:27,260 --> 00:07:33,210 un buen descanso limpia de 8 grupos de 4. 136 00:07:33,210 --> 00:07:36,200 Recuerde que cada grupo de 4 aquí, singularmente corresponde 137 00:07:36,200 --> 00:07:37,760 a un dígito hexadecimal. 138 00:07:37,760 --> 00:07:42,080 Así que vamos a empezar de nuevo la construcción de nuestra número de la derecha, y de trabajo se fue. 139 00:07:42,080 --> 00:07:44,890 Bueno lo que es 1101? 140 00:07:44,890 --> 00:07:49,220 Bueno hacemos las matemáticas en nuestra cabeza, tenemos 1 en el lugar ochos, un 1 141 00:07:49,220 --> 00:07:54,310 en el lugar cuatro patas, un 0 en las parejas lugar, y un 1 en el lugar de las unidades. 142 00:07:54,310 --> 00:07:58,820 Eso es 8 más 4 más 1, que sabríamos como 13. 143 00:07:58,820 --> 00:08:02,400 Pero probablemente no escribiríamos 13 hacia fuera, porque estamos trabajando con hexadecimal. 144 00:08:02,400 --> 00:08:07,982 Tenemos que convertirlo al formato hexadecimal equivalente de 13, que es d. 145 00:08:07,982 --> 00:08:12,940 >> 0011, así que es un 0 en el lugar ochos, un 0 en cuatro patas lugar, 146 00:08:12,940 --> 00:08:15,190 un 1 en el lugar de dos en dos, y un 1 en el lugar de las unidades. 147 00:08:15,190 --> 00:08:16,880 Eso es 3. 148 00:08:16,880 --> 00:08:20,180 Me refiero a seguir haciendo esto una vez más, que tenemos aquí 9. 149 00:08:20,180 --> 00:08:23,850 Y luego 11, pero eso es b, el recuerdo. 150 00:08:23,850 --> 00:08:30,570 2, 10-- o A-- 6 y 4. 151 00:08:30,570 --> 00:08:34,669 Y para que gran cadena de de 0 y 1 de la parte superior de 152 00:08:34,669 --> 00:08:38,549 se expresa de forma más concisa en hexadecimal como 0x 46a2b93d. 153 00:08:38,549 --> 00:08:42,309 154 00:08:42,309 --> 00:08:45,870 >> Bueno, está bien, hemos aprendido una nueva habilidad fresco, ¿qué sentido tiene? 155 00:08:45,870 --> 00:08:49,560 Puede que no utilice esto todo el tiempo, como vamos a ver pronto, 156 00:08:49,560 --> 00:08:52,370 usamos hexadecimal bastante mucho como programadores. 157 00:08:52,370 --> 00:08:55,060 No necesariamente para el propósito de hacer matemáticas con él, 158 00:08:55,060 --> 00:08:58,470 sino porque muchas veces direcciones de memoria en nuestro sistema 159 00:08:58,470 --> 00:09:00,440 están representados en hexadecimal. 160 00:09:00,440 --> 00:09:04,390 Es una manera muy concisa de expresar de lo contrario, números binarios engorroso. 161 00:09:04,390 --> 00:09:06,440 Y así, una vez más, es posible que no-- usted está probablemente 162 00:09:06,440 --> 00:09:07,640 No vamos a hacer ninguna matemáticas con ella, usted no está 163 00:09:07,640 --> 00:09:09,848 va a ser la multiplicación números hexadecimales juntos, 164 00:09:09,848 --> 00:09:11,770 o hacer cualquier extraño como eso. 165 00:09:11,770 --> 00:09:16,120 Pero es una habilidad útil tener para que pueda expresar y comprender 166 00:09:16,120 --> 00:09:23,290 direcciones de memoria, y otra formas de utilización de los datos en C. 167 00:09:23,290 --> 00:09:26,240 >> Soy Doug Lloyd, esto es CS50. 168 00:09:26,240 --> 00:09:28,028