1 00:00:01,984 --> 00:00:07,450 [Powered by Google Translate] [SONIDOS ELECTRONICOS STATIC] 2 00:00:07,450 --> 00:00:11,320 ROB: Bueno, ¿y qué nos trajiste a CS50 es Spaces. 3 00:00:11,320 --> 00:00:12,325 ALI: Espera, espera de nuevo. 4 00:00:12,325 --> 00:00:13,175 Bienvenidos a la sección! 5 00:00:13,175 --> 00:00:13,860 ROB: Bienvenidos a la sección! 6 00:00:13,860 --> 00:00:14,742 ALI: Yay! 7 00:00:14,742 --> 00:00:16,840 ROB: supersección! 8 00:00:16,840 --> 00:00:18,610 ALI: Soy Ali y esto es Rob. 9 00:00:18,610 --> 00:00:20,680 Bien, ahora vamos a explicar Spaces. 10 00:00:20,680 --> 00:00:23,650 ROB: ¿Y qué nos trajiste a CS50 es Spaces. 11 00:00:23,650 --> 00:00:29,260 Usted va a utilizar mucho esto en las secciones de este semestre. 12 00:00:29,260 --> 00:00:32,110 Básicamente, ya hemos tenido que bajar el aparato. 13 00:00:32,110 --> 00:00:38,630 Y usted puede pensar CS50 Espacios como una interfaz web que habla de un aparato 14 00:00:38,630 --> 00:00:40,670 que tenemos en algún servidor en alguna parte. 15 00:00:40,670 --> 00:00:42,990 Así que usted puede ejecutar su código en este interfaz, y haremos 16 00:00:42,990 --> 00:00:44,180 ver la forma de hacer las cosas. 17 00:00:44,180 --> 00:00:48,200 También puede buscar en el código de otras personas en la sección, y - 18 00:00:48,200 --> 00:00:51,920 ALI: ¿Y como algunas personas han descubierto, puedes chatear gente en el lateral. 19 00:00:51,920 --> 00:00:54,230 Y todos lo verán, también, así que es emocionante. 20 00:00:54,230 --> 00:00:55,655 Entra, ven y siéntate. 21 00:00:55,655 --> 00:00:57,060 Toma asiento. 22 00:00:57,060 --> 00:00:57,840 >> ROB: Así, las secciones son - 23 00:00:57,840 --> 00:00:59,380 ALI: No, no, ustedes pueden venir. 24 00:00:59,380 --> 00:01:03,356 ROB: Las secciones van a ser mucho más interactivo este semestre. 25 00:01:03,356 --> 00:01:04,180 ALI: Oh, él es como - 26 00:01:04,180 --> 00:01:05,840 Oh. 27 00:01:05,840 --> 00:01:07,530 De acuerdo, genial. 28 00:01:07,530 --> 00:01:15,630 Así que si ustedes apenas están entrando, usted puede ir a este enlace, si puedo conseguir 29 00:01:15,630 --> 00:01:20,190 ahí, justo ahí. 30 00:01:20,190 --> 00:01:22,780 En realidad, no puedo escribir, porque no hay espacio en la placa, pero en este enlace 31 00:01:22,780 --> 00:01:27,160 aquí mismo, vaya a la de los equipos, y entrarás CS50 32 00:01:27,160 --> 00:01:29,810 Espacios, lo cual es algo muy bueno. 33 00:01:32,460 --> 00:01:33,830 Bien. 34 00:01:33,830 --> 00:01:35,370 ¿Tiene un problema? 35 00:01:35,370 --> 00:01:39,930 ROB: Así que usted puede encontrar los problemas - 36 00:01:39,930 --> 00:01:42,720 tenemos que ser capaces de escribir esto en alguna parte. 37 00:01:42,720 --> 00:01:50,040 Así que si vas a cs50.net/psets y este es el supersección hacker - 38 00:01:50,040 --> 00:01:55,870 y entras en la edición pirata de un conjunto de procesadores, vea la especificación 39 00:01:55,870 --> 00:01:57,620 en algún lugar de la página - 40 00:02:01,940 --> 00:02:04,280 >> ALI: Así que, básicamente, mientras que Rob está mirando, lo que vamos a hacer en 41 00:02:04,280 --> 00:02:06,650 Hoy sección es hay una sección de problemas - 42 00:02:06,650 --> 00:02:07,600 ROB: - en la página ocho. 43 00:02:07,600 --> 00:02:09,300 ALI: - llamada sección de problemas - 44 00:02:09,300 --> 00:02:10,280 ROB: Sección de preguntas. 45 00:02:10,280 --> 00:02:11,630 ALI: Lo siento, una sección de preguntas. 46 00:02:11,630 --> 00:02:14,450 Y esos son los que vamos a pasar - 47 00:02:14,450 --> 00:02:16,370 esos son los que vamos a pasar hoy en la sección. 48 00:02:16,370 --> 00:02:20,010 Y nosotros vamos a codificar en CS50 Espacios, y es de esperar que va a funcionar. 49 00:02:20,010 --> 00:02:22,210 Y sólo podemos hablar a través de ellos. 50 00:02:22,210 --> 00:02:24,510 Y ustedes pueden hacer preguntas cada vez que se siente - 51 00:02:24,510 --> 00:02:27,890 >> ROB: Así que esto se está convirtiendo en algo común con la mayoría de conjuntos de procesadores. 52 00:02:27,890 --> 00:02:31,000 Creo que con esto, se dice que usted no tiene que entregar estas preguntas pulg 53 00:02:31,000 --> 00:02:36,780 Pero la idea es que estas cuestiones se ponen en el conjunto de procesadores, y usted puede venir 54 00:02:36,780 --> 00:02:39,790 a la sección de tener esas preguntas. 55 00:02:39,790 --> 00:02:42,730 O si usted no viene a la sección, usted puede responder por su cuenta o conseguir 56 00:02:42,730 --> 00:02:44,250 ayudar a las horas de oficina o algo así. 57 00:02:44,250 --> 00:02:47,540 Pero éstas son cuestiones que se supone que prepararte para el conjunto de problemas. 58 00:02:47,540 --> 00:02:50,910 Y en la edición pirata, muchas de las preguntas podría ser de 59 00:02:50,910 --> 00:02:54,170 la ampliación de su actual conocimiento CS. 60 00:02:54,170 --> 00:02:55,370 ALI: Sí, bastante. 61 00:02:55,370 --> 00:02:57,950 >> Bien, entonces, es que todos los espacios en CS50? 62 00:02:57,950 --> 00:02:59,457 Hola, adelante 63 00:02:59,457 --> 00:03:00,828 Ponencia 1: ¿Podemos ver la dirección una vez más? 64 00:03:04,030 --> 00:03:07,000 Rob: Sí, esto será más fácil una vez que esté en sus secciones, y 65 00:03:07,000 --> 00:03:10,760 la TF sólo puede enviarle por correo electrónico la URL de antemano. 66 00:03:10,760 --> 00:03:11,870 ALI: Yay, tome asiento. 67 00:03:11,870 --> 00:03:13,170 Hay asientos aquí. 68 00:03:13,170 --> 00:03:14,420 El frente no es tan malo. 69 00:03:17,112 --> 00:03:18,362 ¿Qué? 70 00:03:20,650 --> 00:03:23,590 Por lo tanto, CS50 Spaces, nos vamos acercando. 71 00:03:23,590 --> 00:03:26,760 ¿Alguien tiene alguna pregunta antes de entrar en - ¿qué? 72 00:03:26,760 --> 00:03:28,060 ROB: No hay siquiera una tiza. 73 00:03:28,060 --> 00:03:29,270 [Inaudible] 74 00:03:29,270 --> 00:03:31,540 ALI: Lo siento. 75 00:03:31,540 --> 00:03:32,950 Podrías usar tus uñas? 76 00:03:32,950 --> 00:03:38,210 Estamos en una habitación muy baja tecnología para una clase muy alta tecnología. 77 00:03:38,210 --> 00:03:40,795 Bueno, todo el mundo es una especie de bien? 78 00:03:40,795 --> 00:03:44,310 ¿Alguien tiene aún dudas sobre ello? 79 00:03:44,310 --> 00:03:48,540 Como he dicho antes, vamos a ir a través de la sección de preguntas 80 00:03:48,540 --> 00:03:51,340 las especificaciones PSET. 81 00:03:51,340 --> 00:03:53,490 Así que sólo hay un par de problemas que vamos a 82 00:03:53,490 --> 00:03:57,490 codificar en CS50 Spaces. 83 00:03:57,490 --> 00:03:58,740 ¿Están todos bien? 84 00:04:01,010 --> 00:04:01,360 Bien. 85 00:04:01,360 --> 00:04:02,312 ¿Bueno? 86 00:04:02,312 --> 00:04:04,260 ROB: ¿Tienes un ordenador portátil? 87 00:04:04,260 --> 00:04:05,150 ALI: Puede pasar el rato con Lucas. 88 00:04:05,150 --> 00:04:06,960 Está sentado a tu lado. 89 00:04:06,960 --> 00:04:10,030 Vinculación tiempo. 90 00:04:10,030 --> 00:04:10,990 >> ROB: Entonces, comience con el primer problema? 91 00:04:10,990 --> 00:04:11,260 ALI: Si. 92 00:04:11,260 --> 00:04:11,820 Podemos empezar. 93 00:04:11,820 --> 00:04:12,390 ¿Usted me quiere - 94 00:04:12,390 --> 00:04:13,700 Puedo ir. 95 00:04:13,700 --> 00:04:16,666 Por lo tanto, vamos a ir a las especificaciones PSET. 96 00:04:16,666 --> 00:04:17,640 Oh, ¿por qué lo es - 97 00:04:17,640 --> 00:04:18,890 ROB: Control. 98 00:04:21,769 --> 00:04:25,770 ALI: Bueno, vamos a responder a estas cosas también? 99 00:04:25,770 --> 00:04:26,190 ROB: Oh, sí. 100 00:04:26,190 --> 00:04:27,280 Por lo tanto - 101 00:04:27,280 --> 00:04:29,675 ALI: Oh, sí pantalones cortos protagonizada por todo el mundo reloj de Rob? 102 00:04:32,430 --> 00:04:33,360 De acuerdo, genial. 103 00:04:33,360 --> 00:04:36,870 Rob: Sí, no creo que nos espera necesariamente que usted tenga 104 00:04:36,870 --> 00:04:40,650 lo vi antes de venir a esta sección, pero podemos discutir los 105 00:04:40,650 --> 00:04:43,870 problemas de antemano, ya que están en la sección de preguntas cosas. 106 00:04:43,870 --> 00:04:46,480 Así que si no lo han visto, no se preocupe. 107 00:04:46,480 --> 00:04:48,630 Los que tienen pueden tratar de responder. 108 00:04:48,630 --> 00:04:53,875 >> Por lo tanto, la primera pregunta, ¿qué es un pre-procesador, ¿cómo # include 109 00:04:53,875 --> 00:04:56,080 relacionarse? 110 00:04:56,080 --> 00:04:58,440 Así que ¿alguien tiene respuesta para eso? 111 00:04:58,440 --> 00:04:59,320 ALI: Ustedes pueden hablarlo. 112 00:04:59,320 --> 00:05:00,308 Claro, adelante. 113 00:05:00,308 --> 00:05:03,766 Ponencia 2: # include es un código pre-escrito, y en lugar de 114 00:05:03,766 --> 00:05:08,706 copiarlo y pegarlo en su programa, simplemente diciendo que incluyen, 115 00:05:08,706 --> 00:05:14,140 el pre-procesador sabe que está ahí y que debería añadir en 116 00:05:14,140 --> 00:05:17,520 más tarde o antes de que ocurra nada más. 117 00:05:17,520 --> 00:05:18,466 ALI: Sí, impresionante. 118 00:05:18,466 --> 00:05:19,440 Cool. 119 00:05:19,440 --> 00:05:23,820 ROB: Entonces, cuando en realidad estás compilando un programa, el pre-procesador es este 120 00:05:23,820 --> 00:05:25,230 primer paso. 121 00:05:25,230 --> 00:05:27,620 Compilación ocurre en cuatro grandes pasos. 122 00:05:27,620 --> 00:05:31,120 Así que el pre-procesador es el grande primero, y es este tipo que va 123 00:05:31,120 --> 00:05:33,510 y busca a través de todos estos símbolos hash. 124 00:05:33,510 --> 00:05:36,610 Y cualquier línea que comience con una almohadilla, el procesador pre-mira y ve 125 00:05:36,610 --> 00:05:37,880 si se puede procesarlo. 126 00:05:37,880 --> 00:05:43,800 Así que # include le dice al preprocesador para buscar alguna cs50.h 127 00:05:43,800 --> 00:05:47,830 presentar y sólo tienes que copiar y pegar su contenido en este archivo. 128 00:05:47,830 --> 00:05:50,970 Así que usted puede realmente # include lo que quieras, pero es en su mayoría va a ser 129 00:05:50,970 --> 00:05:53,700 H. Archivos. 130 00:05:53,700 --> 00:05:55,820 No hemos llegado a # define todavía, así que no importa. 131 00:05:55,820 --> 00:05:57,620 ALI: Sí, somos buenos en eso. 132 00:05:57,620 --> 00:05:59,450 ¿Alguien tiene alguna pregunta acerca de eso? 133 00:05:59,450 --> 00:06:01,090 ¿Estamos bien? 134 00:06:01,090 --> 00:06:02,430 Siguiente pregunta. 135 00:06:02,430 --> 00:06:07,096 >> ALTAVOZ 3: En el fin, había algo en c también.? 136 00:06:07,096 --> 00:06:09,110 ¿Eso es relevante o es irrelevante? 137 00:06:09,110 --> 00:06:11,210 ROB: Acerca de c con el pre-procesador.? 138 00:06:11,210 --> 00:06:13,990 Ponente 3: Sí, o lo puedo hacer algo? 139 00:06:13,990 --> 00:06:18,290 ROB: Así que el pequeño podría haber estado mostrando el preprocesado de este archivo y 140 00:06:18,290 --> 00:06:24,240 . dar salida a otro archivo c, por lo que puede pre-procesar este archivo - 141 00:06:24,240 --> 00:06:30,000 cuando usted acaba de funcionar como, hola o hacer hello.c sonido metálico, que está haciendo todo 142 00:06:30,000 --> 00:06:31,730 la compilación en un gran paso. 143 00:06:31,730 --> 00:06:34,780 Pero usted puede hacerlo de forma explícita en sus etapas separadas. 144 00:06:34,780 --> 00:06:36,950 Así que primero se puede pre-procesar. 145 00:06:36,950 --> 00:06:42,260 A continuación, puede compilar, entonces se puede montar, y entonces usted puede vincular. 146 00:06:42,260 --> 00:06:43,620 Vamos a llegar a los otros. 147 00:06:43,620 --> 00:06:47,410 Sin embargo, pre-procesamiento, que tipo de lo pre-proceso, y después de que entre en 148 00:06:47,410 --> 00:06:49,270 otro. c archivo. 149 00:06:49,270 --> 00:06:51,430 Debido a que pre-procesamiento en realidad no cambia nada. 150 00:06:51,430 --> 00:06:52,800 Es sólo un montón de copiar y pegar. 151 00:06:52,800 --> 00:06:56,760 Manualmente, puede copiar y pegar usted mismo. 152 00:06:56,760 --> 00:06:59,630 ALI:. Y para ser claro, el archivo es un archivo c C, por lo que es 153 00:06:59,630 --> 00:07:00,930 escrito en código C. 154 00:07:00,930 --> 00:07:03,300 Así que va desde el código C a código C. 155 00:07:03,300 --> 00:07:05,210 No eres más que añadir más código con la libra. 156 00:07:05,210 --> 00:07:08,575 ROB: Cuando se pre-procesados, todavía es un archivo válido de C. 157 00:07:08,575 --> 00:07:09,940 ALTAVOZ 3: De acuerdo. 158 00:07:09,940 --> 00:07:10,540 ALI: Buena pregunta. 159 00:07:10,540 --> 00:07:11,370 Eso me gusta. 160 00:07:11,370 --> 00:07:12,755 Vale, siguiente pregunta. 161 00:07:17,870 --> 00:07:19,660 >> ¿Cuál es el compilador? 162 00:07:19,660 --> 00:07:20,824 ¿Alguien? 163 00:07:20,824 --> 00:07:21,286 Sí. 164 00:07:21,286 --> 00:07:24,650 ALTAVOZ 4: Cambia el código de pre-procesado en el montaje. 165 00:07:24,650 --> 00:07:25,110 ALI: Perfect. 166 00:07:25,110 --> 00:07:25,390 ROB: Si. 167 00:07:25,390 --> 00:07:25,720 ALI: Cool. 168 00:07:25,720 --> 00:07:28,270 ROB: Así que eso es lo que el compilador está haciendo específicamente 169 00:07:28,270 --> 00:07:30,740 cuando estamos usando Clang. 170 00:07:30,740 --> 00:07:35,100 En un sentido muy general, un compilador es como si estuviera tomando el código en un lenguaje 171 00:07:35,100 --> 00:07:37,070 y convertirlo en otro idioma. 172 00:07:37,070 --> 00:07:38,370 Así que en C - 173 00:07:38,370 --> 00:07:43,750 o, bien, Clang está tomando el código que está en C y transformarlo para el montaje. 174 00:07:43,750 --> 00:07:46,560 Y que no tiene que ser capaz de entender el conjunto en absoluto. 175 00:07:46,560 --> 00:07:49,830 Pero ese es el idioma que se está convirtiendo en lo. 176 00:07:49,830 --> 00:07:50,230 >> ALI: Bueno. 177 00:07:50,230 --> 00:07:52,920 Y entonces, ¿qué es un ensamblador? 178 00:07:52,920 --> 00:07:54,270 ¿Alguien? 179 00:07:54,270 --> 00:07:56,810 ALTAVOZ 5: [inaudible] en binario? 180 00:07:56,810 --> 00:07:57,260 ALI: Lo siento, ¿qué? 181 00:07:57,260 --> 00:07:58,760 ALTAVOZ 5: [inaudible] en binario? 182 00:07:58,760 --> 00:07:59,260 ROB: Yep. 183 00:07:59,260 --> 00:07:59,880 ALI: Sí. 184 00:07:59,880 --> 00:08:01,960 ROB: Así que el ensamblador - 185 00:08:01,960 --> 00:08:05,830 código ensamblador es muy, muy cerca de lo que su computadora puede entender, 186 00:08:05,830 --> 00:08:09,390 pero recuerda que no acaba de entender el texto 187 00:08:09,390 --> 00:08:10,630 que es código ensamblador. 188 00:08:10,630 --> 00:08:14,570 Es necesario que lo convierten en 1s y 0s recta. 189 00:08:14,570 --> 00:08:17,000 Es como un proceso de traducción directa. 190 00:08:17,000 --> 00:08:19,450 Podríamos darle una tabla que asigna lo que cada 191 00:08:19,450 --> 00:08:21,880 instrucciones de montaje significa. 192 00:08:21,880 --> 00:08:24,340 Sin embargo, el ensamblador está haciendo esto traducción para usted. 193 00:08:24,340 --> 00:08:28,790 Se está transformando el código ensamblador en 1s y 0s. 194 00:08:28,790 --> 00:08:30,870 >> ALI: ¿Y entonces, por último, ¿qué es un conector? 195 00:08:30,870 --> 00:08:35,070 ¿Y cómo-lcs50 relacionarse? 196 00:08:35,070 --> 00:08:37,010 ¿Alguien? 197 00:08:37,010 --> 00:08:41,440 ROB: Este es el más difícil y por lo explicado en el vídeo un compilador. 198 00:08:41,440 --> 00:08:48,980 ALI: ¿Alguien recuerda haber visto-lcs50 en un comando? 199 00:08:48,980 --> 00:08:50,690 ALTAVOZ 6: Cuando usted fue a la marca. 200 00:08:50,690 --> 00:08:51,980 ALI: Es en el hacer. 201 00:08:51,980 --> 00:08:55,780 Sí, fresco y bien. 202 00:08:55,780 --> 00:09:02,024 ¿Hay alguna idea o vagos - Sí, vaya. 203 00:09:02,024 --> 00:09:06,370 ALTAVOZ 7: No estoy seguro, porque su corto era realmente [inaudible], pero fue 204 00:09:06,370 --> 00:09:12,244 algo acerca de hacer archivos separados con cada biblioteca y luego poner 205 00:09:12,244 --> 00:09:13,620 todos juntos en una biblioteca? 206 00:09:13,620 --> 00:09:14,400 ROB: Si. 207 00:09:14,400 --> 00:09:23,000 Así que cuando usted tiene hello.c, es un programa muy simple. 208 00:09:23,000 --> 00:09:25,570 Realmente estás haciendo sólo una cosa en él. 209 00:09:25,570 --> 00:09:27,400 Pero cuando te metes en otros programas - 210 00:09:27,400 --> 00:09:31,700 y creo que incluso cuando GetString en sus programas, que necesita para empezar 211 00:09:31,700 --> 00:09:33,830 incluyendo otros archivos. 212 00:09:33,830 --> 00:09:38,000 Así que la biblioteca CS50 es un fichero en el que tenemos las implementaciones 213 00:09:38,000 --> 00:09:40,750 de GetString y getInt y todas esas cosas. 214 00:09:40,750 --> 00:09:45,540 Así que lo que el enlazador que hace es que va por ahí buscando a través de todos estos 215 00:09:45,540 --> 00:09:49,400 archivos, viendo donde se definen las funciones, asegurándose de que cuando llamo 216 00:09:49,400 --> 00:09:52,440 GetString en algún lugar, sabe que GetString significa que es el 217 00:09:52,440 --> 00:09:54,910 GetString más en la biblioteca CS50. 218 00:09:54,910 --> 00:09:58,895 Así que el vinculador sólo toma todos estos archivos, rompe juntas, y ahora 219 00:09:58,895 --> 00:10:01,020 Tiene un ejecutable. 220 00:10:01,020 --> 00:10:05,600 Así que tenga en cuenta, si usted está utilizando la biblioteca CS50, es necesario tener las 221 00:10:05,600 --> 00:10:10,370 # Include en la parte superior, y luego también en el comando make, como 222 00:10:10,370 --> 00:10:12,630 Dicho esto, usted tiene que tener la lcs50-. 223 00:10:12,630 --> 00:10:15,720 Así que no sólo puede tener uno. 224 00:10:15,720 --> 00:10:18,294 Así que eso es algo a tener en cuenta para futuras consultas. 225 00:10:18,294 --> 00:10:22,550 >> ALTAVOZ 8: Por lo tanto, vamos a decir que no había otra librería, como cs51.h, ¿nos 226 00:10:22,550 --> 00:10:26,780 También hay que añadir-lcs51? 227 00:10:26,780 --> 00:10:32,390 ROB: La única razón-lcs50 funciona a la perfección es porque no tenemos ese conjunto 228 00:10:32,390 --> 00:10:35,800 en un lugar específico en sus aparatos para que sepa qué 229 00:10:35,800 --> 00:10:38,550 -Lcs50 medios. 230 00:10:38,550 --> 00:10:43,240 Podríamos darle un archivo cs50.c, y entonces usted puede compilarlo, diciendo: 231 00:10:43,240 --> 00:10:49,050 Clang hello.c cs50.c, y entonces tendría su ejecutable poniendo 232 00:10:49,050 --> 00:10:50,350 esos dos archivos juntos. 233 00:10:50,350 --> 00:10:56,520 Sabe que-lcs50 significa cs50.c otra vez en algún directorio que se especifica en el 234 00:10:56,520 --> 00:10:58,350 sus aparatos. 235 00:10:58,350 --> 00:11:04,290 Así que si quería una cs51.c ser determinable por sólo decir-lcs51, 236 00:11:04,290 --> 00:11:06,760 entonces también tendría que ponerlo en ese directorio para que sepa dónde 237 00:11:06,760 --> 00:11:08,636 buscarla. 238 00:11:08,636 --> 00:11:10,510 ALI: ¿Cuál es tu pregunta? 239 00:11:10,510 --> 00:11:13,975 >> ALTAVOZ 7: ¿Por qué tienes que conectar el CS50 240 00:11:13,975 --> 00:11:18,940 si - ¿no era que copiar / pegar en el primer paso cuando se pre-procesado? 241 00:11:18,940 --> 00:11:19,700 ALI: ¿Quieres tomarlo? 242 00:11:19,700 --> 00:11:20,880 ROB: Por supuesto. 243 00:11:20,880 --> 00:11:28,028 Así el archivo cs50.h está separado de la cs50.c archivo C. 244 00:11:28,028 --> 00:11:33,652 ¿Has llegado a funcionar prototipos en clase? 245 00:11:33,652 --> 00:11:34,350 Bien. 246 00:11:34,350 --> 00:11:40,255 Así que, básicamente, el archivo cs50.h es sólo va a copiar y pegar - 247 00:11:40,255 --> 00:11:44,040 ALI: ¿Ustedes saben lo que son las firmas? 248 00:11:44,040 --> 00:11:46,580 Bien, así que más o menos, si nos fijamos en - 249 00:11:46,580 --> 00:11:50,530 ROB: Vamos a fingir cs50.h no está allí. 250 00:11:50,530 --> 00:11:52,960 Ahora este archivo - 251 00:11:52,960 --> 00:11:56,090 que está haciendo GetString string s =. 252 00:11:56,090 --> 00:11:59,350 Pero cuando hemos llegado a este punto en el código, no tiene idea de lo que 253 00:11:59,350 --> 00:12:00,230 GetString es. 254 00:12:00,230 --> 00:12:02,600 Se sabe que es una función, ya que lo está llamando. 255 00:12:02,600 --> 00:12:06,500 Pero no saben que en realidad debe retornar una cadena. 256 00:12:06,500 --> 00:12:14,530 Así que, como he dicho, string s = getInt, esto no tiene ningún sentido, ya que 257 00:12:14,530 --> 00:12:17,530 que está firmando un entero a una cadena. 258 00:12:17,530 --> 00:12:22,270 Pero no sabe que GetString tiene sentido, ya que no 259 00:12:22,270 --> 00:12:24,380 Sabemos que GetString devuelve una cadena. 260 00:12:24,380 --> 00:12:28,220 Así que lo que dice es cs50.h algo como esto. 261 00:12:33,070 --> 00:12:37,750 ALI: ¿Así que lo que Rob está escribiendo es que es una promesa en la forma que se va a 262 00:12:37,750 --> 00:12:41,280 tienen esta función llamada GetString. 263 00:12:41,280 --> 00:12:45,250 ROB: Esto es todo lo que cs50.h es copiar y pegar aquí, así 264 00:12:45,250 --> 00:12:47,620 como getInt y todas esas cosas. 265 00:12:47,620 --> 00:12:51,520 Y esto sólo dice que GetString vuelve una cadena. 266 00:12:51,520 --> 00:12:54,830 No sabes cómo está implementado todavía, pero cuando llegamos a esta línea, ahora 267 00:12:54,830 --> 00:12:57,760 se sabe que devuelve correctamente una cadena. 268 00:12:57,760 --> 00:13:03,022 >> ALTAVOZ 9: Así que si no nos molestamos con la cosa # include y en su lugar 269 00:13:03,022 --> 00:13:07,130 acabo de escribir el prototipo de los que estamos en realidad va a usar? 270 00:13:07,130 --> 00:13:07,330 ROB: Si. 271 00:13:07,330 --> 00:13:08,870 Así que vamos a ejecutar este. 272 00:13:08,870 --> 00:13:09,110 ALTAVOZ 9: ¿Lo es? 273 00:13:09,110 --> 00:13:13,670 Así que, por defecto, lo haría el l-CS50 a sólo porque -. 274 00:13:13,670 --> 00:13:14,740 ROB: - expresión. 275 00:13:14,740 --> 00:13:19,370 ALI: Sí, porque como usted ha dicho, está en el archivo make. 276 00:13:19,370 --> 00:13:24,040 ROB: cs50.h también pasa a ser * typedef char a string. 277 00:13:24,040 --> 00:13:26,950 Usted puede ignorar lo que eso significa, por ahora. 278 00:13:26,950 --> 00:13:31,430 Pero eso también es algo incluido en cs50.h. 279 00:13:31,430 --> 00:13:34,230 Así que ahora todo funcionaba perfectamente bien. 280 00:13:34,230 --> 00:13:40,770 Funciona exactamente igual que lo fue cuando nos tuvimos 281 00:13:40,770 --> 00:13:45,120 el # include. 282 00:13:45,120 --> 00:13:49,200 Y así como cs50.h sucede a un exceso de incluir cosas que usted necesita - 283 00:13:49,200 --> 00:13:53,080 como, ya no usa el getInt en este programa, pero eso no importa. 284 00:13:53,080 --> 00:13:55,010 Es simplemente lo ignoran. 285 00:13:55,010 --> 00:14:02,400 ALI: Y luego, cuando haces el-lcs50 aquí y aquí, qué está pasando 286 00:14:02,400 --> 00:14:05,290 es en que se trata de tener el código implementable real. 287 00:14:05,290 --> 00:14:07,530 Así que ahí es donde está realmente, haciendo - 288 00:14:07,530 --> 00:14:09,090 escribir el código para GetString. 289 00:14:09,090 --> 00:14:11,180 Así que no es sólo una promesa más. 290 00:14:11,180 --> 00:14:16,520 En realidad, es pasando y tomar la cuerda y todo eso. 291 00:14:16,520 --> 00:14:17,600 Tiene sentido? 292 00:14:17,600 --> 00:14:22,640 ¿Preguntas? Está bien. 293 00:14:22,640 --> 00:14:24,466 Cool Beans. 294 00:14:24,466 --> 00:14:27,630 >> ROB: Ahora podemos pasar a código real. 295 00:14:27,630 --> 00:14:28,780 ALI: Bueno. 296 00:14:28,780 --> 00:14:33,340 Así que aquí está el primer problema. 297 00:14:33,340 --> 00:14:36,910 Por lo que dice escribir un programa que pide al usuario una minúscula 298 00:14:36,910 --> 00:14:40,540 letra y luego la convierte a mayúsculas sin usar bitwise 299 00:14:40,540 --> 00:14:43,590 operaciones, de acuerdo con el resultado de ejemplo a continuación. 300 00:14:43,590 --> 00:14:48,780 Así que usted puede ver, se ejecuta el programa con el. / A.out, y entonces estás 301 00:14:48,780 --> 00:14:53,320 va a poner en minúscula, a continuación, el programa debe dar a conocer el capital 302 00:14:53,320 --> 00:15:00,590 A. ¿Por qué no se van todos a darle un tiro en CS50 Spaces? 303 00:15:00,590 --> 00:15:03,360 Así que ustedes pueden ir todos aquí. 304 00:15:03,360 --> 00:15:06,650 Y usted puede eliminar todo el código aquí. 305 00:15:06,650 --> 00:15:12,140 Y entonces usted puede seguir adelante y empezar a programar la cosa. 306 00:15:12,140 --> 00:15:14,590 ROB: Usted probablemente querrá usar GetChar, eso es 307 00:15:14,590 --> 00:15:16,190 incluido en la biblioteca CS50. 308 00:15:16,190 --> 00:15:18,770 ALI: Supongo que podría ser mejor si se guarda la parte superior. 309 00:15:21,452 --> 00:15:23,805 Así que es posible que desee cambiar sólo las cosas en el medio. 310 00:15:28,710 --> 00:15:29,070 Seguir adelante y trabajar. 311 00:15:29,070 --> 00:15:30,530 Siéntase libre para trabajar con otros. 312 00:15:30,530 --> 00:15:32,360 Rob: Y usted puede hacer preguntas si usted tiene - 313 00:15:32,360 --> 00:15:33,450 >> ALTAVOZ 10: ¿Qué es una operación bit a bit? 314 00:15:33,450 --> 00:15:35,100 ROB: Entonces, pasar por alto que para este problema. 315 00:15:35,100 --> 00:15:36,330 ALI: Si no lo sabe, eso es bueno. 316 00:15:36,330 --> 00:15:38,300 ROB: Nosotros lo vamos a usar en el siguiente problema. 317 00:15:38,300 --> 00:15:40,750 Pero si usted no sabe lo que es un operador de bits es, eso está bien. 318 00:15:40,750 --> 00:15:43,575 ALTAVOZ 10: ¿Es como convertirlo a código ASCII? 319 00:15:43,575 --> 00:15:44,050 ALI: No. 320 00:15:44,050 --> 00:15:44,750 ROB: No. 321 00:15:44,750 --> 00:15:46,220 Usted puede hacer eso por este problema. 322 00:15:46,220 --> 00:15:48,280 ALTAVOZ 10: ¿Cómo se hace eso? 323 00:15:48,280 --> 00:15:52,460 Así que si yo tuviera un lugar para escribir - 324 00:15:52,460 --> 00:15:54,670 ALI: O algo con qué escribir. 325 00:15:54,670 --> 00:15:56,780 ROB: Podría sólo un poco en este tipo. 326 00:15:56,780 --> 00:15:59,045 ALI: Escriba en la parte superior. 327 00:15:59,045 --> 00:16:01,390 ROB: Oh, estoy sentado en un micrófono. 328 00:16:01,390 --> 00:16:10,860 >> Así, hemos visto en la conferencia que el valor ASCII de A mayúscula es 65. 329 00:16:10,860 --> 00:16:13,670 Y el capital B será 66, y así sucesivamente. 330 00:16:13,670 --> 00:16:20,860 Así que, literalmente, puede usar 'A' en el sentido del número 65. 331 00:16:20,860 --> 00:16:24,600 Al igual, este es el valor 65. 332 00:16:24,600 --> 00:16:30,950 Puedo hacer algo como int x = 100 - 'A'. Y ahora, x tendrá el valor 333 00:16:30,950 --> 00:16:33,810 100-65. 334 00:16:33,810 --> 00:16:36,708 ALI: Puede ejecutar y mostrar que eso. 335 00:16:36,708 --> 00:16:38,420 Oh, tal vez no. 336 00:16:38,420 --> 00:16:38,600 No importa. 337 00:16:38,600 --> 00:16:40,970 ROB: tuve que imprimirlo. 338 00:16:40,970 --> 00:16:43,730 ALTAVOZ 10: ¿Cómo se vuelva a personaje? 339 00:16:43,730 --> 00:16:46,800 ALI: Así que si no - 340 00:16:46,800 --> 00:16:51,450 que acaba de obligar a que sea un char, es igual. 341 00:16:51,450 --> 00:16:53,630 ROB: Así que hay una - 342 00:16:53,630 --> 00:16:58,440 la distinción entre un carácter y un entero es sólo en términos de tamaño. 343 00:16:58,440 --> 00:17:01,230 Así que un número entero pasa a ser capaces de representar las cosas 344 00:17:01,230 --> 00:17:02,600 a, como, cuatro mil millones. 345 00:17:02,600 --> 00:17:05,839 Un char sólo es capaz de representar las cosas hasta 255. 346 00:17:05,839 --> 00:17:08,390 Pero no hay ninguna diferencia entre ellos distinto de este. 347 00:17:08,390 --> 00:17:12,339 Así que puedes decir char c = 65. 348 00:17:12,339 --> 00:17:24,204 Eso es equivalente a decir char c es igual a 'A'. 349 00:17:24,204 --> 00:17:25,210 ALI: Oh, no. 350 00:17:25,210 --> 00:17:26,710 En realidad, no guardar cosas. 351 00:17:26,710 --> 00:17:28,130 ROB: No, usted no puede hacer eso. 352 00:17:28,130 --> 00:17:31,610 ALI: Eso es justo - 353 00:17:31,610 --> 00:17:34,920 [Gemidos] 354 00:17:34,920 --> 00:17:40,700 >> ROB: Está bien, así que lo que acabo de escribir Ali era un programa que primero imprime 100 - 355 00:17:40,700 --> 00:17:46,290 'A' como un entero, que tenía 35 años, como esperamos, porque 100 menos el ASCII 356 00:17:46,290 --> 00:17:48,580 valor de A es 65. 357 00:17:48,580 --> 00:17:54,100 Luego se imprimen mediante% c, lo que significa que la interpretan como un char. 358 00:17:54,100 --> 00:17:57,050 Así 100 - una es de 35. 359 00:17:57,050 --> 00:18:00,990 Interpretar a un personaje que, como resulta ser el símbolo de hash. 360 00:18:00,990 --> 00:18:06,160 Si nos fijamos en asciitable.com o lo que sea, verás que el 35 es el 361 00:18:06,160 --> 00:18:07,410 símbolo de hash. 362 00:18:09,940 --> 00:18:12,700 ALI: Bueno, cualquier aclaración sobre el otro problema? 363 00:18:16,000 --> 00:18:18,180 Bueno, ustedes pueden ir adelante y hacerlo entonces. 364 00:18:18,180 --> 00:18:20,330 No dude en hacer preguntas o hablar entre sí. 365 00:18:20,330 --> 00:18:24,390 O si ya está hecho, usted puede relajarse. 366 00:18:24,390 --> 00:18:29,640 >> LUCAS: ¿Son la misma clase, todas las letras minúsculas en orden y 367 00:18:29,640 --> 00:18:32,923 también las mayúsculas también se encuentran en orden, porque eso es algo útil para 368 00:18:32,923 --> 00:18:33,990 el problema. 369 00:18:33,990 --> 00:18:35,620 ALI: Buen punto, Lucas. 370 00:18:35,620 --> 00:18:37,430 Entonces, ¿ustedes todo eso? 371 00:18:37,430 --> 00:18:37,640 ALTAVOZ 11: Sí. 372 00:18:37,640 --> 00:18:39,535 Así es como lo haces, ¿verdad? 373 00:18:39,535 --> 00:18:39,960 ALI: Así es. 374 00:18:39,960 --> 00:18:40,415 ROB: Si. 375 00:18:40,415 --> 00:18:47,270 ALTAVOZ 11: [inaudible] 376 00:18:47,270 --> 00:18:48,330 ALI: Bueno. 377 00:18:48,330 --> 00:18:49,350 ROB: ¿Cuál es la pregunta que pide? 378 00:18:49,350 --> 00:18:50,590 Sólo para convertir - 379 00:18:50,590 --> 00:18:52,560 ALI: Convertir las minúsculas a la mayúscula. 380 00:18:52,560 --> 00:18:53,100 Eso es todo. 381 00:18:53,100 --> 00:18:54,700 ROB: Muy bien. 382 00:18:54,700 --> 00:18:56,180 ALI: ¿Hay que escribir? 383 00:18:56,180 --> 00:18:59,340 Supongo que sólo tendremos que mirar de otra persona. 384 00:18:59,340 --> 00:19:07,140 ROB: Así que para aquellos que puedan estar atascado, una manera - 385 00:19:07,140 --> 00:19:15,160 si tengo algún char c, y decir que vamos a pasa a ser la letra D. 386 00:19:15,160 --> 00:19:20,760 Así que ahora, ¿cómo puedo averiguar qué letra del alfabeto es C? 387 00:19:20,760 --> 00:19:25,620 D No, pero quiero decir, D pasa a ser la cuarta letra del alfabeto. 388 00:19:25,620 --> 00:19:28,910 Y si empezamos a contar desde 0, que es la tercera letra del alfabeto. 389 00:19:28,910 --> 00:19:36,240 Así que si A es 0 y B es 1, C es 2, D 3, ¿cómo puedo averiguar la posición int - 390 00:19:36,240 --> 00:19:40,780 cuál es la posición del alfabeto C es en? 391 00:19:40,780 --> 00:19:42,333 ¿Alguien tiene alguna idea? 392 00:19:42,333 --> 00:19:45,440 ALI: Creo que todos estamos de codificación. 393 00:19:45,440 --> 00:19:46,440 ROB: ¿Qué pasa con la primera? 394 00:19:46,440 --> 00:19:48,608 ALTAVOZ 12: Así que lo que A es, restar la primera? 395 00:19:48,608 --> 00:19:49,030 ROB: Si. 396 00:19:49,030 --> 00:19:49,950 ALI: Sí, impresionante. 397 00:19:49,950 --> 00:19:51,765 Por lo que podría hacer el capital D - 398 00:19:51,765 --> 00:19:52,840 oh, lo siento. 399 00:19:52,840 --> 00:19:55,620 Usted toma el carácter y se resta de la primera, como usted ha dicho. 400 00:19:55,620 --> 00:20:03,940 ROB: Entonces, si D es algo así como 68, y restamos A, que es de 65, entonces obtenemos 401 00:20:03,940 --> 00:20:07,130 3, que nos dice que D es la tercera letra del alfabeto 402 00:20:07,130 --> 00:20:09,290 a partir de 0. 403 00:20:09,290 --> 00:20:11,310 Así que usted puede utilizar eso. 404 00:20:11,310 --> 00:20:13,830 Ahora sabemos qué letra del alfabeto, en términos de 405 00:20:13,830 --> 00:20:16,060 letras mayúsculas, o - 406 00:20:16,060 --> 00:20:18,330 podríamos hacer lo mismo con las letras minúsculas para averiguar qué 407 00:20:18,330 --> 00:20:20,170 minúsculas posición que estamos metidos 408 00:20:20,170 --> 00:20:25,690 Y podemos usar eso para convertir a mayúsculas después de que utiliza un 409 00:20:25,690 --> 00:20:26,970 idea muy similar. 410 00:20:31,470 --> 00:20:32,670 Pida sugerencias? 411 00:20:32,670 --> 00:20:35,810 >> ALI: ¿Ustedes - espera, no sé hasta qué punto ustedes son. 412 00:20:35,810 --> 00:20:40,060 ¿La mayoría de los que has hecho, ¿sigues trabajando, ¿está atascado? 413 00:20:40,060 --> 00:20:42,020 Ustedes pueden gritar - 414 00:20:42,020 --> 00:20:42,330 atascado. 415 00:20:42,330 --> 00:20:43,210 Una persona ha atascado. 416 00:20:43,210 --> 00:20:43,560 Cool. 417 00:20:43,560 --> 00:20:44,700 Tiendo a ser atrapado, también. 418 00:20:44,700 --> 00:20:45,415 ALTAVOZ 13: Ya he terminado. 419 00:20:45,415 --> 00:20:46,410 ALI: ¡Ya está? 420 00:20:46,410 --> 00:20:47,480 Bien. 421 00:20:47,480 --> 00:20:47,935 Hecho. 422 00:20:47,935 --> 00:20:49,300 ALTAVOZ 13: [inaudible] 423 00:20:49,300 --> 00:20:50,600 ALI: Sí, bien. 424 00:20:50,600 --> 00:20:53,720 ¿Está usted de comprobar que está en forma minúscula? 425 00:20:53,720 --> 00:20:56,730 De acuerdo, genial. 426 00:20:56,730 --> 00:20:59,882 ¿Dónde están los demás? 427 00:20:59,882 --> 00:21:06,140 ¿Esta pista te ayude, como para sí mismo sin pegar? 428 00:21:06,140 --> 00:21:09,778 ALTAVOZ 14: En realidad no, pero sólo porque, no sé, no estoy 429 00:21:09,778 --> 00:21:11,590 digiriendo todavía. 430 00:21:11,590 --> 00:21:12,640 ALI: Bueno, genial. 431 00:21:12,640 --> 00:21:13,431 ¿Quieres probar - 432 00:21:13,431 --> 00:21:16,140 o quieres ir a hablar? 433 00:21:16,140 --> 00:21:18,590 >> ROB: Lo que iba a decir es - 434 00:21:18,590 --> 00:21:19,890 por lo que usar esto. 435 00:21:19,890 --> 00:21:22,650 ¿Entiende usted cómo llegamos cuál es la posición del alfabeto 436 00:21:22,650 --> 00:21:24,820 la letra es en? 437 00:21:24,820 --> 00:21:30,616 ALTAVOZ 14: De acuerdo, así que cuando usted pone las cosas en una sola cita, 438 00:21:30,616 --> 00:21:35,030 que devuelve un número? 439 00:21:35,030 --> 00:21:37,100 ROB: Si. 440 00:21:37,100 --> 00:21:40,840 Se traducirá al valor ASCII que representa. 441 00:21:40,840 --> 00:21:43,350 Entonces, ¿quieres ir a la tabla ASCII o lo que sea? 442 00:21:46,456 --> 00:21:47,840 ALI: Sólo uno de estos? 443 00:21:47,840 --> 00:21:49,970 ROB: Yep. 444 00:21:49,970 --> 00:21:55,270 Así que cuando usted pone alguno de estos símbolos, haciendo caso omiso de una gran parte de la - 445 00:21:55,270 --> 00:21:56,450 ALI: [inaudible] 446 00:21:56,450 --> 00:21:57,620 ROB: Oh, utilizando el cursor. 447 00:21:57,620 --> 00:21:58,380 ALI: Si. 448 00:21:58,380 --> 00:21:59,690 Eso fue emocionante. 449 00:21:59,690 --> 00:22:04,050 ROB: Así que, haciendo caso omiso de estos los de la izquierda, que son símbolos especiales - 450 00:22:04,050 --> 00:22:08,520 si pones cualquiera de estos símbolos entre comillas simples, entonces será 451 00:22:08,520 --> 00:22:11,620 convierten a este valor de la izquierda. 452 00:22:11,620 --> 00:22:13,660 ALI: Esto es el número decimal de la misma. 453 00:22:13,660 --> 00:22:19,710 Es como un partidos con 65, B 66, y te darás cuenta de que todos están en 454 00:22:19,710 --> 00:22:21,540 orden alfabético, lo que hace la diferencia. 455 00:22:21,540 --> 00:22:27,110 Así que, como dice Rob, antes, en ese código, estábamos calculando la distancia de 456 00:22:27,110 --> 00:22:29,610 la primera letra, per se. 457 00:22:29,610 --> 00:22:32,820 Y eso va a ser la misma, ya sea en mayúsculas o minúsculas. 458 00:22:32,820 --> 00:22:38,390 ROB: Así que cuando hicimos D, 68 menos un 65,, obtenemos 3. 459 00:22:38,390 --> 00:22:42,370 Debido a que D es de tres posiciones en el alfabeto. 460 00:22:42,370 --> 00:22:46,680 ALI: Entonces, ¿cómo se traduce eso a encontrar el poco d? 461 00:22:46,680 --> 00:22:47,240 ROB: Si. 462 00:22:47,240 --> 00:22:52,230 Así que si tengo 3 ahora, sé que quiero ir tres letras en el - 463 00:22:52,230 --> 00:22:54,830 nos ha tocado ir en minúsculas ahora, pero vamos a decir que quiero ir tres 464 00:22:54,830 --> 00:22:58,610 posiciones en la parte minúscula de las cosas. 465 00:22:58,610 --> 00:23:01,400 Entonces, ¿cómo puedo hacer eso? 466 00:23:01,400 --> 00:23:04,240 Sé que es una minúscula 97. 467 00:23:04,240 --> 00:23:07,535 Entonces, ¿cómo puedo encontrar tres posiciones en las letras minúsculas? 468 00:23:10,461 --> 00:23:11,934 >> ALTAVOZ 15: Tengo una pregunta en realidad. 469 00:23:11,934 --> 00:23:12,425 ALI: Sí, adelante. 470 00:23:12,425 --> 00:23:14,880 ALTAVOZ 15: Así que por eso, en realidad no importa si conozco a esta posición, 471 00:23:14,880 --> 00:23:16,360 gusta, yo no necesito esta tabla. 472 00:23:16,360 --> 00:23:16,840 ROB: Nope. 473 00:23:16,840 --> 00:23:19,380 Usted nunca tendrá que utilizar cualquiera de estos números. 474 00:23:19,380 --> 00:23:23,670 Y este es un punto importante en sus programas que usted nunca debería duro 475 00:23:23,670 --> 00:23:25,500 codificar cualquiera de estas constantes. 476 00:23:25,500 --> 00:23:31,190 Use 'A'. nunca use 65 o 97. 477 00:23:31,190 --> 00:23:34,370 ALI: Se llaman números mágicos, y son realmente confuso. 478 00:23:34,370 --> 00:23:37,080 Al igual que, cuando se está depurando un código, es posible que no recuerde lo 479 00:23:37,080 --> 00:23:38,020 usted los utiliza. 480 00:23:38,020 --> 00:23:40,770 Y para nosotros clasificación de su código, no sabrá realmente lo que 481 00:23:40,770 --> 00:23:41,750 usted los está utilizando para. 482 00:23:41,750 --> 00:23:44,815 Así que es mejor si usted utiliza realmente los personajes por lo que tiene 483 00:23:44,815 --> 00:23:46,065 más sentido para las personas. 484 00:23:49,460 --> 00:23:51,160 Bueno, alguna otra pregunta? 485 00:23:51,160 --> 00:23:52,975 ¿Hay más gente hace, o - 486 00:23:56,243 --> 00:23:57,493 Supongo que se puede comprobar. 487 00:23:59,870 --> 00:24:02,410 Es realmente espeluznante que usted puede ver la gente. 488 00:24:02,410 --> 00:24:04,970 ROB: Si. 489 00:24:04,970 --> 00:24:06,410 Nosotros no tenemos que hacer eso aquí. 490 00:24:06,410 --> 00:24:08,380 No sabemos los nombres de las personas, tampoco. 491 00:24:08,380 --> 00:24:10,940 ALI: Ah, sí, bueno, eso lo hace mejor, así que vamos a ser aún más imparcial 492 00:24:10,940 --> 00:24:14,820 en vez de escoger al azar a alguien. 493 00:24:14,820 --> 00:24:15,360 No se preocupe. 494 00:24:15,360 --> 00:24:16,265 No lo voy a hacer. 495 00:24:16,265 --> 00:24:20,396 Si usted tiene las cosas al azar sobre - No importa. 496 00:24:20,396 --> 00:24:20,870 Bien. 497 00:24:20,870 --> 00:24:22,556 ¿Qué están haciendo las personas? 498 00:24:22,556 --> 00:24:26,950 >> ALTAVOZ 17: Así que la novena línea debe imprimir un personaje? 499 00:24:26,950 --> 00:24:27,430 ROB: Si. 500 00:24:27,430 --> 00:24:27,910 ALI: Si. 501 00:24:27,910 --> 00:24:30,770 Así que si usted va abajo - 502 00:24:30,770 --> 00:24:32,200 ROB: Oh, no puedo hacer eso. 503 00:24:32,200 --> 00:24:35,400 ALI: Usted verá que imprime el símbolo de hash. 504 00:24:35,400 --> 00:24:37,180 ALTAVOZ 17: Oh, está bien. 505 00:24:37,180 --> 00:24:41,290 ROB: Supongo que de otra manera se puede ver las cosas es que estamos imprimiendo dos 506 00:24:41,290 --> 00:24:42,540 personajes. 507 00:24:44,500 --> 00:24:47,740 Primero que estamos imprimiendo es la letra A. 508 00:24:47,740 --> 00:24:51,610 La siguiente es la impresión que estamos a sólo 65. 509 00:24:51,610 --> 00:24:54,450 Probablemente voy a gritar a mí para estos. 510 00:24:54,450 --> 00:25:00,060 Así que si nos basta con ejecutar esto, te darás cuenta de que se imprima A veces ambos. 511 00:25:00,060 --> 00:25:02,070 Porque lo estamos preguntando lo mismo. 512 00:25:02,070 --> 00:25:07,840 Lo estamos pidiendo para imprimir la letra A. Y entonces le estamos pidiendo que se imprima el 513 00:25:07,840 --> 00:25:13,820 número 65 interpreta como un carácter, que es la misma cosa. 514 00:25:13,820 --> 00:25:15,100 ALI: ¿Tienes algo que decir? 515 00:25:15,100 --> 00:25:18,150 Oh, es broma, lo siento. 516 00:25:18,150 --> 00:25:20,640 Muy bien, ¿cómo son las personas - 517 00:25:20,640 --> 00:25:22,280 ROB: Se puede caminar a través de él. 518 00:25:22,280 --> 00:25:25,250 >> ALI: Bueno, ¿cómo empezar? 519 00:25:25,250 --> 00:25:26,500 ¿Alguien? 520 00:25:28,030 --> 00:25:34,486 Como sugerencia, tenemos que conseguir algo de las personas, de los typers. 521 00:25:34,486 --> 00:25:36,850 ALTAVOZ 18: [inaudible] 522 00:25:36,850 --> 00:25:38,290 ALI: Ah, sí, un perfecto sistema,. 523 00:25:38,290 --> 00:25:40,660 Así que vamos a escribir - 524 00:25:40,660 --> 00:25:41,670 ¿qué tipo? 525 00:25:41,670 --> 00:25:43,660 ¿Alguien? 526 00:25:43,660 --> 00:25:46,480 ¿O debo escribirlo? 527 00:25:46,480 --> 00:25:47,530 ¿Estamos realmente escribiendo el - 528 00:25:47,530 --> 00:25:48,430 ROB: Por supuesto. 529 00:25:48,430 --> 00:25:50,990 ALI: Así que vamos a escribir un printf para estimular, para que podamos ser 530 00:25:50,990 --> 00:25:54,810 gusta, me dan un carácter. 531 00:25:54,810 --> 00:25:55,710 Bien, ¿y entonces qué? 532 00:25:55,710 --> 00:25:56,664 ¿Por qué está haciendo eso? 533 00:25:56,664 --> 00:25:57,620 ROB: No lo sé. 534 00:25:57,620 --> 00:26:00,070 ALI: Bueno. 535 00:26:00,070 --> 00:26:03,680 Así que ahora, les estamos diciendo que nos dé un carácter. 536 00:26:03,680 --> 00:26:07,064 Pero entonces, ¿cómo se consigue realmente ese personaje? 537 00:26:07,064 --> 00:26:10,060 ALTAVOZ 19: GetString uso. 538 00:26:10,060 --> 00:26:12,040 ALI: GetString? 539 00:26:12,040 --> 00:26:12,850 GetChar? 540 00:26:12,850 --> 00:26:17,038 Bien, ¿cuál es la diferencia entre una cadena y una charla? 541 00:26:17,038 --> 00:26:20,020 ALTAVOZ 19: Las cadenas son una serie, como un conjunto de caracteres. 542 00:26:20,020 --> 00:26:21,910 >> ALI: Cool, sí. 543 00:26:21,910 --> 00:26:25,550 Así que en este problema, sólo tenemos que considerar un carácter a la vez, por lo que 544 00:26:25,550 --> 00:26:28,400 sólo vamos a hacer GetChar para esa instancia. 545 00:26:28,400 --> 00:26:32,400 ROB: Podríamos implementar una función que si queríamos que tuvo una cadena completa 546 00:26:32,400 --> 00:26:35,750 y fue la cadena y cambió todo en minúsculas a mayúsculas y todo 547 00:26:35,750 --> 00:26:37,380 mayúsculas a minúsculas. 548 00:26:37,380 --> 00:26:39,170 Pero aquí, sólo estamos pidiendo un carácter. 549 00:26:39,170 --> 00:26:42,800 ALI: Así que ahora tenemos el carácter aquí, pero entonces tenemos que guardarlo. 550 00:26:42,800 --> 00:26:45,070 Así que vamos a añadir char c - ¿qué? 551 00:26:45,070 --> 00:26:46,070 ALTAVOZ 20: Defina la variable. 552 00:26:46,070 --> 00:26:48,100 ALI: Sí, exactamente. 553 00:26:48,100 --> 00:26:49,585 Así que tenemos nuestro carácter. 554 00:26:49,585 --> 00:26:51,766 ROB: Creo que podría ser - 555 00:26:51,766 --> 00:26:55,630 que está a sólo tres espacios, por lo que está gritando en usted. 556 00:26:55,630 --> 00:27:01,300 >> ALI: Bueno, cool, ahora que hemos tabulación conjunto, ¿qué pasa después? 557 00:27:01,300 --> 00:27:02,550 ¿Cuál es el siguiente paso? 558 00:27:05,590 --> 00:27:08,870 ROB: Lo que nuestro programa debe hacer es cambiar una letra minúscula para una 559 00:27:08,870 --> 00:27:10,130 letra mayúscula. 560 00:27:10,130 --> 00:27:15,478 ¿Qué pasa si se me ocurre para introducir el símbolo hash? 561 00:27:15,478 --> 00:27:16,314 Es que - 562 00:27:16,314 --> 00:27:16,732 ALI: Es un buen símbolo. 563 00:27:16,732 --> 00:27:18,270 Nosotros usamos mucho. 564 00:27:18,270 --> 00:27:21,937 ROB: ¿Eso es válido que se puede convertir en una forma mayúscula? 565 00:27:21,937 --> 00:27:23,070 ALTAVOZ 21: No. 566 00:27:23,070 --> 00:27:24,070 ALI: No. 567 00:27:24,070 --> 00:27:24,900 Debemos comprobar que. 568 00:27:24,900 --> 00:27:34,950 Así que podemos tener una sentencia if comprobando así que si el c es mayor que 569 00:27:34,950 --> 00:27:37,410 o igual a a'la minúscula '- 570 00:27:37,410 --> 00:27:45,490 por lo que si nos fijamos en el gráfico, te darás cuenta de que tiene que ser de aquí, 571 00:27:45,490 --> 00:27:47,670 a 97, y la minúscula. 572 00:27:47,670 --> 00:27:52,110 Y puede ser cualquiera de estos, y en incrementos abajo todo el camino. 573 00:27:52,110 --> 00:27:55,200 Y luego está z en 122. 574 00:27:55,200 --> 00:27:58,215 Y tiene que caen entre estos dos valores. 575 00:27:58,215 --> 00:27:59,700 ¿Eso tiene sentido? 576 00:27:59,700 --> 00:28:04,130 ROB: Así que si c no es entre 97 y 122 - 577 00:28:04,130 --> 00:28:09,960 o que nunca debería tener que usar esos números - si c no es entre 'a' y 578 00:28:09,960 --> 00:28:15,110 'Z', entonces no era un carácter válido para nosotros en mayúsculas. 579 00:28:15,110 --> 00:28:18,590 ALI: Así que, en forma de código, se dice que si c es mayor o igual a un solo 580 00:28:18,590 --> 00:28:19,640 en minúsculas - 581 00:28:19,640 --> 00:28:21,270 wow, ¿cómo puedes decir eso? 582 00:28:21,270 --> 00:28:26,900 De acuerdo, es mayor o igual a «a» minúscula, y tiene que estar por encima 583 00:28:26,900 --> 00:28:32,250 la minúscula 'z'. Así que tiene que ser menor o igual a minúsculas 'z'. 584 00:28:32,250 --> 00:28:35,300 Nos estamos asegurando de que es entre los dos. 585 00:28:35,300 --> 00:28:38,540 Entonces podemos continuar con nuestro código feliz. 586 00:28:41,992 --> 00:28:43,360 ¿Qué? 587 00:28:43,360 --> 00:28:46,860 ROB: Así que pensé que sólo podría seguir preguntando, si resulta que no tienen un 588 00:28:46,860 --> 00:28:48,250 letra minúscula. 589 00:28:48,250 --> 00:28:51,130 ALI: Oh, yo no era consciente de ello. 590 00:28:51,130 --> 00:28:52,820 Lo siento. 591 00:28:52,820 --> 00:28:58,100 >> Muy bien, así que si vamos a hacer lo que dice Rob, y asegúrese de que - 592 00:28:58,100 --> 00:29:02,068 podemos seguir haciendo ellos, entonces ¿qué debemos hacer? 593 00:29:02,068 --> 00:29:02,994 ALTAVOZ 22: [inaudible] 594 00:29:02,994 --> 00:29:03,530 ROB: Si. 595 00:29:03,530 --> 00:29:05,630 Debemos utilizar algún tipo de bucle. 596 00:29:05,630 --> 00:29:12,900 Debido a que el usuario puede introducir algo inválido una cantidad incalculable de veces. 597 00:29:12,900 --> 00:29:14,990 Así que usted puede utilizar un bucle while. 598 00:29:14,990 --> 00:29:18,870 El propósito de un bucle do-while - 599 00:29:18,870 --> 00:29:21,340 literalmente, la única vez en sus vidas que tendrá que utilizar do- 600 00:29:21,340 --> 00:29:24,780 bucles while es cuando usted está pidiendo la entrada del usuario. 601 00:29:24,780 --> 00:29:28,260 Así que el hecho de que estamos pidiendo la entrada del usuario que aquí hay una insinuación de que deberíamos 602 00:29:28,260 --> 00:29:29,660 utilizar un bucle do-while. 603 00:29:29,660 --> 00:29:30,780 ¿Y por qué es eso? 604 00:29:30,780 --> 00:29:34,270 Debido a do-while siempre pasa por lo menos una vez. 605 00:29:34,270 --> 00:29:40,260 Así que cuando usted está pidiendo la entrada del usuario, que desea que esto suceda, al menos una vez. 606 00:29:40,260 --> 00:29:42,750 Y si las cosas fueran correctamente, puede seguir adelante. 607 00:29:42,750 --> 00:29:45,130 Si no es así, vuelve a preguntar de nuevo. 608 00:29:45,130 --> 00:29:48,950 >> ALI: En otras palabras, tenemos que ver sección. 609 00:29:48,950 --> 00:29:51,130 Y así, este está diciendo que haga algo. 610 00:29:51,130 --> 00:29:53,890 Así printf - 611 00:29:53,890 --> 00:29:57,490 imprimir la declaración, rápido, y también conseguir el carácter, o el intento de 612 00:29:57,490 --> 00:29:58,780 conseguir un personaje. 613 00:29:58,780 --> 00:30:03,410 Y luego tenemos que comprobar si en realidad lo hizo correctamente. 614 00:30:03,410 --> 00:30:07,730 Entonces añadimos las condiciones, entonces decimos rato, y entonces tenemos la 615 00:30:07,730 --> 00:30:08,980 sentencia condicional. 616 00:30:11,600 --> 00:30:14,730 ROB: Pero ahora que hemos revocado la línea de pensamiento. 617 00:30:14,730 --> 00:30:18,940 Ahora que originalmente estaban diciendo si c está en este rango, es válido. 618 00:30:18,940 --> 00:30:23,340 Ahora queremos revertir eso y decir si c no está en este rango, entonces 619 00:30:23,340 --> 00:30:25,020 necesidad de volver a hacer las cosas de nuevo. 620 00:30:25,020 --> 00:30:25,900 ALI: Oh, sí. 621 00:30:25,900 --> 00:30:31,720 Rob: Así, mientras que esto no es cierto, queremos volver atrás y 622 00:30:31,720 --> 00:30:34,470 pedir otro personaje. 623 00:30:34,470 --> 00:30:36,880 ¿Todo el mundo ve eso? 624 00:30:36,880 --> 00:30:38,830 Las preguntas sobre esto? 625 00:30:38,830 --> 00:30:39,400 Bien. 626 00:30:39,400 --> 00:30:43,480 >> Así que ahora tenemos un carácter válido que podemos mayúsculas. 627 00:30:43,480 --> 00:30:47,150 ALI: ¿Entonces cuál es el siguiente paso para las mayúsculas ella? 628 00:30:49,994 --> 00:30:51,890 ALTAVOZ 23: Añadir 32. 629 00:30:51,890 --> 00:30:52,600 ALI: Agrega - 630 00:30:52,600 --> 00:30:54,150 Perdón, ¿qué? 631 00:30:54,150 --> 00:30:56,580 ALTAVOZ 23: ¿No puedes añadir 32? 632 00:30:56,580 --> 00:31:02,360 ROB: Así que sí, no en términos de números mágicos. 633 00:31:02,360 --> 00:31:04,610 Sólo se debe utilizar comillas simples cosas. 634 00:31:04,610 --> 00:31:06,450 ALTAVOZ 23: Bien, bien - 635 00:31:06,450 --> 00:31:07,250 ROB: Pero usted puede obtener 32 - 636 00:31:07,250 --> 00:31:11,870 ALI: ¿Cómo conseguiste el número 32, creo, es lo que estamos diciendo. 637 00:31:11,870 --> 00:31:18,060 ALTAVOZ 23: [inaudible] 638 00:31:18,060 --> 00:31:22,158 ROB: Así que podemos llegar con el número 32 junto - 639 00:31:22,158 --> 00:31:24,468 ALTAVOZ 23: [inaudible]? 640 00:31:24,468 --> 00:31:24,930 ROB: Si. 641 00:31:24,930 --> 00:31:28,540 Pero si vamos a hacerlo en los dos pasos que hicimos antes con 642 00:31:28,540 --> 00:31:29,950 la materia posición. 643 00:31:29,950 --> 00:31:36,910 Así que la posición en el alfabeto que pasa a ser c es c menos minúsculas 644 00:31:36,910 --> 00:31:42,360 'A'. Así que si entramos en una minúscula 'd', puesto que va a ser 3. 645 00:31:42,360 --> 00:31:46,490 Y ahora queremos llevar las cosas al alcance mayúsculas de las cosas. 646 00:31:46,490 --> 00:31:55,376 Así que ahora nuestro nuevo c va a ser la 'A' mayúscula posición plus. 647 00:31:55,376 --> 00:32:00,090 Entonces, ¿cómo la gente ve que nos trae - 648 00:32:00,090 --> 00:32:04,140 nos estamos moviendo de la gama minúsculas, la profundidad exacta en la que estábamos 649 00:32:04,140 --> 00:32:07,650 rango, y descender al rango de mayúsculas, y va tan lejos 650 00:32:07,650 --> 00:32:10,610 en ella de nuevo, que va a ser el mismo carácter, pero ahora 651 00:32:10,610 --> 00:32:12,550 uppercased. 652 00:32:12,550 --> 00:32:16,490 ALI: ¿Y para las personas que estaban confundidos por la forma en que él acaba de decir 32, 653 00:32:16,490 --> 00:32:20,390 básicamente, combinó ambos en un comunicado. 654 00:32:20,390 --> 00:32:24,550 Así que una manera equivalente a escribir esto para decir que puede sólo tipo de 655 00:32:24,550 --> 00:32:28,190 puesto de sustituto, el c menos 'a,' y lo puso aquí. 656 00:32:28,190 --> 00:32:31,330 Así que lo que hice, yo no - 657 00:32:31,330 --> 00:32:44,510 caracteres en mayúsculas newc = 'A' más c menos minúscula 'a'. Y a causa de álgebra, 658 00:32:44,510 --> 00:32:47,090 Usted puede moverse. 659 00:32:47,090 --> 00:32:52,960 También se puede decir que se puede mover alrededor para caracteres en mayúscula newc = 'A' 660 00:32:52,960 --> 00:32:55,620 menos minúscula 'a' plus c. 661 00:32:55,620 --> 00:32:58,650 Y esto, te darás cuenta de si nos remontamos a la carta. 662 00:33:01,160 --> 00:33:06,300 Contamos con mayúscula A es 65 y una minúscula es 97. 663 00:33:06,300 --> 00:33:09,800 Por lo tanto 65 a 97 es -32. 664 00:33:09,800 --> 00:33:10,020 >> Hi. 665 00:33:10,020 --> 00:33:10,930 Toma asiento. 666 00:33:10,930 --> 00:33:12,180 Oh. 667 00:33:16,240 --> 00:33:17,980 Usted puede sentarse aquí. 668 00:33:17,980 --> 00:33:20,805 Genial, bueno, impresionante. 669 00:33:20,805 --> 00:33:22,390 Bienvenidos a la sección. 670 00:33:22,390 --> 00:33:25,110 Se dará cuenta de que la diferencia es de 32. 671 00:33:25,110 --> 00:33:28,150 Así que ahí es donde él consiguió ese número. 672 00:33:28,150 --> 00:33:32,140 Pero no lo es, como dice Rob, la mejor manera de hacerlo, ya que tiene la extraña 673 00:33:32,140 --> 00:33:35,260 confusión número mágico. 674 00:33:35,260 --> 00:33:38,710 ROB: Usted debe usar mayúscula a minúscula menos. 675 00:33:38,710 --> 00:33:43,045 Usted no debe usar sólo directamente 32. 676 00:33:43,045 --> 00:33:45,020 ALTAVOZ 24: ¿Por qué, otra vez? 677 00:33:45,020 --> 00:33:49,860 ¿Por qué no debería usar 32? 678 00:33:49,860 --> 00:33:55,630 ALI: Si lo logramos, sería caracteres newc = -32 + c. 679 00:33:55,630 --> 00:34:00,030 Y si usted no ve ninguna de las demás, si todo esto se ha ido, y usted 680 00:34:00,030 --> 00:34:04,720 sólo ver esta línea, entonces, ¿cómo saber cuál es el negativo 32 está? 681 00:34:04,720 --> 00:34:07,000 Es simplemente fuera de lugar. 682 00:34:07,000 --> 00:34:10,360 ROB: Así que su programa podría funcionar completamente bien. 683 00:34:10,360 --> 00:34:12,960 Es sólo una cosa estilo. 684 00:34:12,960 --> 00:34:17,760 Alguien que entra y la lectura de su código, son como 32, ¿qué significa? 685 00:34:17,760 --> 00:34:18,889 Tal vez no - 686 00:34:18,889 --> 00:34:22,090 Probablemente no pueda comprender inmediatamente que el 32 pasa a ser 687 00:34:22,090 --> 00:34:25,100 diferencia entre una letra minúscula y una letra mayúscula, aunque 688 00:34:25,100 --> 00:34:26,510 vamos a utilizar este hecho en el siguiente problema. 689 00:34:30,210 --> 00:34:31,610 32 es - 690 00:34:31,610 --> 00:34:38,579 usted puede dejar un comentario sobre ella diciendo: 32 es la diferencia entre 691 00:34:38,579 --> 00:34:45,290 'A' y 'a'. Pero en ese momento, ¿por qué no usar 'A' y 'a', y 692 00:34:45,290 --> 00:34:47,469 no es necesario el comentario a continuación. 693 00:34:47,469 --> 00:34:52,739 >> ALI: Es sólo la forma por encima de ella son mucho más limpio, el estilo se refiere. 694 00:34:52,739 --> 00:34:54,590 Y por eso, ya que estás empezando programación - 695 00:34:54,590 --> 00:34:57,775 o creo que no, ya que eres edi hacker - no importa. 696 00:34:57,775 --> 00:34:59,420 Es una buena manera de tener - 697 00:34:59,420 --> 00:35:01,230 es mejor tener un mejor estilo. 698 00:35:01,230 --> 00:35:02,850 Es más fácil para la gente a leer. 699 00:35:02,850 --> 00:35:06,560 ROB: Usted nunca debería tener que recordar la tabla ASCII, nunca. 700 00:35:06,560 --> 00:35:09,505 Usted sólo debe ser capaz de utilizar los caracteres de comillas simples. 701 00:35:12,390 --> 00:35:12,730 ¿Preguntas? 702 00:35:12,730 --> 00:35:13,980 ALI: Todo el mundo bien? 703 00:35:16,020 --> 00:35:16,430 ROB: Muy bien. 704 00:35:16,430 --> 00:35:23,320 Así que el siguiente problema es sustancial. 705 00:35:23,320 --> 00:35:24,660 Así que el siguiente problema nos pide - 706 00:35:27,880 --> 00:35:31,570 ALI: El siguiente problema está pidiendo que hagamos lo mismo, pero para utilizar 707 00:35:31,570 --> 00:35:32,640 bitwise operadores. 708 00:35:32,640 --> 00:35:35,170 ROB: Y por supuesto, no hemos visto todavía operadores bit a bit. 709 00:35:35,170 --> 00:35:38,874 Así que ahora voy a hablar de eso. 710 00:35:38,874 --> 00:35:39,540 ALI: Estar emocionado. 711 00:35:39,540 --> 00:35:41,490 Son super divertido. 712 00:35:41,490 --> 00:35:47,927 >> ROB: Así que los operadores regulares, como x más y, menos, los tiempos, divisoria. 713 00:35:47,927 --> 00:35:50,850 ALI: Escriba en este sistema. 714 00:35:50,850 --> 00:35:55,420 ROB: También hay%, si usted no lo ha visto, que se puede utilizar por el 715 00:35:55,420 --> 00:35:57,130 por ciento símbolo. 716 00:35:57,130 --> 00:35:59,090 Pero no vamos a utilizar los de este problema. 717 00:35:59,090 --> 00:36:01,400 Queremos usar los operadores bit a bit. 718 00:36:01,400 --> 00:36:06,250 Ahora recuerde, nosotros lo traían en una conferencia. 719 00:36:06,250 --> 00:36:10,760 No estoy seguro de si hemos discutido binario más allá de eso. 720 00:36:10,760 --> 00:36:13,710 Pero recuerde que cada número solo se representa - 721 00:36:13,710 --> 00:36:14,540 así, todo - 722 00:36:14,540 --> 00:36:17,860 se representa en 1s y 0s en binario. 723 00:36:17,860 --> 00:36:27,320 Así que eso significa que cuando digo el número 8, que yo sé que eso es 724 00:36:27,320 --> 00:36:30,240 como, 1000. 725 00:36:30,240 --> 00:36:35,530 ¿Qué operadores bit a bit vamos a hacer es operar en estos bits - 726 00:36:35,530 --> 00:36:37,000 se operan en estos bits directamente. 727 00:36:40,160 --> 00:36:42,490 Ahora estoy ya no se trata en términos de ocho. 728 00:36:42,490 --> 00:36:45,930 Estoy tratando en términos de 1000, y quiero hacer las cosas con las que 729 00:36:45,930 --> 00:36:47,670 bits individuales. 730 00:36:47,670 --> 00:36:52,520 Así que Ali ha escrito los operadores bit a bit aquí, pero eso es - 731 00:36:55,060 --> 00:36:58,020 El número 8 usaremos como uno de los números de nuestro ejemplo. 732 00:36:58,020 --> 00:37:02,980 Y la representación binaria es 1000. 733 00:37:02,980 --> 00:37:06,520 Vamos a utilizar otro número, 5 - 734 00:37:06,520 --> 00:37:12,070 en realidad vamos a utilizar 9 y 5. 735 00:37:12,070 --> 00:37:15,778 Y el 5 de representación binaria es 00 - 736 00:37:15,778 --> 00:37:18,380 0101. 737 00:37:18,380 --> 00:37:19,480 ALI: ¿Están todos bien en eso? 738 00:37:19,480 --> 00:37:21,040 El material binario? 739 00:37:21,040 --> 00:37:23,740 Fue a partir de la primera conferencia? 740 00:37:23,740 --> 00:37:29,070 >> ROB: Así que incluso si usted no está completamente en la parte superior de la forma de convertir las cosas 741 00:37:29,070 --> 00:37:31,700 binario, que no es del todo importante para este problema. 742 00:37:31,700 --> 00:37:36,560 Vamos a estar usando, pero tendrás muchas más posibilidades para encontrar la manera de 743 00:37:36,560 --> 00:37:39,250 rápidamente cambiar las cosas en binario. 744 00:37:39,250 --> 00:37:43,820 Así que con 9 y 5, ahora tenemos nuestros operadores bit a bit. 745 00:37:43,820 --> 00:37:48,620 Ah, y también, 9 y 5, si es un número entero, entonces en realidad es 32 bits, 746 00:37:48,620 --> 00:37:53,150 lo que significa que tenemos como 0, 0, 0, 0 un montón de veces, y luego 747 00:37:53,150 --> 00:37:55,330 101 en el último momento. 748 00:37:55,330 --> 00:37:58,530 Eso es porque, no importa lo que hagas, en números enteros, de 32 bits. 749 00:37:58,530 --> 00:38:01,570 El hecho de que sólo se necesitan cuatro bits para representar 9 no significa que no seamos 750 00:38:01,570 --> 00:38:05,500 utilizando los otros 27 bits por sólo 0. 751 00:38:05,500 --> 00:38:10,110 ALI: Solo para aclarar, uno de estos números que hay un 0 o un 1 es un bit. 752 00:38:10,110 --> 00:38:11,830 Éste es de 4 bits. 753 00:38:11,830 --> 00:38:14,320 Como tantas Rob dijo que las máquinas de almacenarlos en el 32. 754 00:38:14,320 --> 00:38:19,430 Así que entonces tendrían 32 de un 0 o un 1. 755 00:38:19,430 --> 00:38:22,190 Cool? 756 00:38:22,190 --> 00:38:23,610 ROB: Los operadores bit a bit. 757 00:38:23,610 --> 00:38:27,310 El primero que vamos a tratar, vamos a hacer y. 758 00:38:27,310 --> 00:38:31,260 Así que si hacemos 9 y 5. 759 00:38:31,260 --> 00:38:38,310 Así que lo que hace es y, poco a poco, compara los bits de los dos números 760 00:38:38,310 --> 00:38:44,860 y si ambos números son 1, y luego volverá a 1. 761 00:38:44,860 --> 00:38:50,870 Si uno es un 0 y el otro es un 1, o ambos son 0s, a continuación, devuelve un 0. 762 00:38:50,870 --> 00:38:53,060 Así que usted puede pensar en ella como sus lógicas AND. 763 00:38:53,060 --> 00:38:59,270 Al igual que usted necesita cierto y verdadero para devolver true, pero cierto y lo falso es falso. 764 00:38:59,270 --> 00:39:02,390 Por lo que es lo mismo, pero ahora estamos tratando con él con sólo bits. 765 00:39:02,390 --> 00:39:04,910 >> ALI: Entonces, si nos fijamos en esto, tendrás 1 - 766 00:39:04,910 --> 00:39:08,490 las vas a alinear, por lo que será 1 y 0. 767 00:39:08,490 --> 00:39:11,036 ¿Ustedes piensan que sería - lo que evaluaría a? 768 00:39:11,036 --> 00:39:11,770 ALTAVOZ 25: 1. 769 00:39:11,770 --> 00:39:12,270 ALI: Cool. 770 00:39:12,270 --> 00:39:16,850 O no. 771 00:39:16,850 --> 00:39:18,830 Lo siento. 772 00:39:18,830 --> 00:39:21,290 ¿Eso tiene sentido? 773 00:39:21,290 --> 00:39:23,200 Entonces, ¿cuál es la respuesta colectiva de nuevo? 774 00:39:23,200 --> 00:39:24,750 Lo siento. 775 00:39:24,750 --> 00:39:27,530 Así que si tenemos 1 y 0, entonces ¿qué se obtiene? 776 00:39:27,530 --> 00:39:30,260 ROB: ¿Así que piensa en lo que dices y en voz alta. 777 00:39:30,260 --> 00:39:37,550 Si dispone de dos bits, x e y, necesitas x e y para ser 1 a fin de que 778 00:39:37,550 --> 00:39:40,770 para evaluar a verdadero - o, a fin de que para evaluar a 1. 779 00:39:40,770 --> 00:39:45,650 Si xoy son 0, entonces se evalúa como falso o 0. 780 00:39:45,650 --> 00:39:49,165 LUCAS: Es bueno recordar también que 1 es verdadero y 0 es falso. 781 00:39:49,165 --> 00:39:51,684 Así que si tienes verdadero y falso, es falso. 782 00:39:51,684 --> 00:39:53,570 Pero entonces, fiel y verdadero, verdadero. 783 00:39:53,570 --> 00:39:55,040 Falso y falso, falso. 784 00:39:55,040 --> 00:39:57,650 ALI: Tenemos verdadero y falso. 785 00:39:57,650 --> 00:39:58,530 So 1 y 0. 786 00:39:58,530 --> 00:40:00,380 Así que, de nuevo, lo siento, una vez más? 787 00:40:00,380 --> 00:40:02,210 ALTAVOZ 25: Sería 0. 788 00:40:02,210 --> 00:40:03,560 Sí, bien. 789 00:40:03,560 --> 00:40:05,400 Y luego tenemos 0 y 1 - 790 00:40:05,400 --> 00:40:06,260 ALTAVOZ 25: [inaudible] 791 00:40:06,260 --> 00:40:06,680 ALI: Si. 792 00:40:06,680 --> 00:40:09,790 Así que siempre se puede cambiar en - 793 00:40:09,790 --> 00:40:12,150 Entonces, si usted tiene 0 y 0? 794 00:40:12,150 --> 00:40:12,618 ALTAVOZ 4: 1? 795 00:40:12,618 --> 00:40:14,490 0? 796 00:40:14,490 --> 00:40:16,230 ROB: Así que es 0. 797 00:40:16,230 --> 00:40:18,870 No es que los números tienen que ser el mismo. 798 00:40:18,870 --> 00:40:22,030 Es que ambos números tienen que ser 1. 799 00:40:22,030 --> 00:40:26,150 ALI: ¿Así que ambos tienen que ser verdad para que sea cierto. 800 00:40:26,150 --> 00:40:26,950 Así que eso es 0. 801 00:40:26,950 --> 00:40:30,540 Y entonces usted tiene un 1%, lo que es? 802 00:40:30,540 --> 00:40:32,640 ROB: Son números bastante buenos. 803 00:40:32,640 --> 00:40:34,362 Tienen todo es posible - 804 00:40:34,362 --> 00:40:36,210 ALI: Buen trabajo, wow. 805 00:40:36,210 --> 00:40:37,080 De acuerdo, genial. 806 00:40:37,080 --> 00:40:39,220 ¿Eso tiene sentido para todo el mundo? 807 00:40:39,220 --> 00:40:41,770 >> ROB: Así que ahora vamos a hacer |. 808 00:40:41,770 --> 00:40:51,650 Y esto va a ser muy similar, pero ahora en lugar de x e y necesidad de 809 00:40:51,650 --> 00:40:54,880 ser de 1 a fin de que ésta pueda valorar a uno, ahora es sólo xo 810 00:40:54,880 --> 00:40:56,360 y tiene que ser 1. 811 00:40:56,360 --> 00:40:59,580 ALI: So 1 | 0 se evalúa como - 812 00:40:59,580 --> 00:41:00,270 CLASE: 1. 813 00:41:00,270 --> 00:41:01,690 ALI: Cool. 814 00:41:01,690 --> 00:41:03,710 0 | 1 evalúa a - 815 00:41:03,710 --> 00:41:04,420 CLASE: 1. 816 00:41:04,420 --> 00:41:06,726 ALI: Cool, y luego 0 | 0 - 817 00:41:06,726 --> 00:41:07,600 CLASE: 0. 818 00:41:07,600 --> 00:41:09,320 ALI: Sí, y luego 1 | 1 - 819 00:41:09,320 --> 00:41:10,180 CLASE: 1. 820 00:41:10,180 --> 00:41:12,090 ALI: Cool. 821 00:41:12,090 --> 00:41:14,060 Así es como dos operadores bit a bit. 822 00:41:14,060 --> 00:41:15,430 Awesome. 823 00:41:15,430 --> 00:41:16,440 ROB: Así que ahora vamos a hacer ^. 824 00:41:16,440 --> 00:41:18,470 ALI: ¿Hay que hacer todo de ellos? 825 00:41:18,470 --> 00:41:20,620 ROB: Sí, porque creo que lo van a utilizar - 826 00:41:20,620 --> 00:41:22,340 uso de todas ellas. 827 00:41:22,340 --> 00:41:23,150 ALI: Bueno. 828 00:41:23,150 --> 00:41:23,570 Por lo tanto - 829 00:41:23,570 --> 00:41:25,540 ROB: Supongo que no hace falta. 830 00:41:25,540 --> 00:41:31,830 ALI: Entonces ^ obras en que usted tiene que tener exactamente una verdadera y una falsa. 831 00:41:31,830 --> 00:41:34,330 ^ Significa OR exclusiva. 832 00:41:34,330 --> 00:41:36,650 Así que ahora no es - 833 00:41:36,650 --> 00:41:41,220 si x e y son ambos 1, es ahora falsa. 834 00:41:41,220 --> 00:41:46,920 Esa es la diferencia entre ^ y |, es que O, usted puede tener, si x es 835 00:41:46,920 --> 00:41:49,440 verdadera o Y es cierto, entonces estamos bien. 836 00:41:49,440 --> 00:41:55,176 No, dice que si x ^ es verdad, y debe ser falsa, o de lo contrario no es cierto. 837 00:41:55,176 --> 00:41:56,814 ¿Tiene una pregunta? 838 00:41:56,814 --> 00:42:00,526 >> ALTAVOZ 26: [inaudible] 839 00:42:00,526 --> 00:42:00,990 ALI: Si. 840 00:42:00,990 --> 00:42:01,830 Es algo similar. 841 00:42:01,830 --> 00:42:07,320 Rob: Sí, así que cuando llegue a eso de hardware de bajo nivel, estos son 842 00:42:07,320 --> 00:42:10,870 los tipos de operaciones que se está tratando. 843 00:42:10,870 --> 00:42:13,200 A nivel de hardware, sólo se ocupará de bits. 844 00:42:13,200 --> 00:42:14,950 Usted no se ocupan de números. 845 00:42:18,030 --> 00:42:23,502 ALI: Bueno, para ^, o si tiene 1 ^ 0, lo que se debe evaluar a? 846 00:42:23,502 --> 00:42:24,840 CLASE: 1. 847 00:42:24,840 --> 00:42:25,480 ALI: Cool. 848 00:42:25,480 --> 00:42:26,010 Si usted tiene 849 00:42:26,010 --> 00:42:28,370 0 ^ 1? CLASE: 1. 850 00:42:28,370 --> 00:42:29,490 ALI: Cool. 851 00:42:29,490 --> 00:42:32,050 0 ^ 0? 852 00:42:32,050 --> 00:42:32,470 Cool. 853 00:42:32,470 --> 00:42:33,460 Y entonces 1 ^ 1? 854 00:42:33,460 --> 00:42:35,050 CLASE: 0. 855 00:42:35,050 --> 00:42:37,710 ALI: Cool, impresionante. 856 00:42:37,710 --> 00:42:38,620 El siguiente - 857 00:42:38,620 --> 00:42:40,520 ROB: Creo que se trata de todo lo que tenemos que tratar. 858 00:42:40,520 --> 00:42:41,490 Sólo vamos a hacer esto. 859 00:42:41,490 --> 00:42:43,242 ALI: La única vez que vamos a tener que hacer - 860 00:42:43,242 --> 00:42:44,912 ROB: Oh, eso será para el último problema. 861 00:42:44,912 --> 00:42:47,070 ALTAVOZ 27: Espera, ¿una vez más? 862 00:42:47,070 --> 00:42:47,940 ALI: Lo siento, ¿cuál era su pregunta? 863 00:42:47,940 --> 00:42:49,564 >> ALTAVOZ 27: ¿Se puede explicar que una vez más? 864 00:42:49,564 --> 00:42:50,100 El ^? 865 00:42:50,100 --> 00:42:51,490 ALTAVOZ 27: Exclus - sí. 866 00:42:51,490 --> 00:42:55,800 ALI: ¿Cuál es la OR exclusiva significa que no tiene que ser exclusivamente 867 00:42:55,800 --> 00:43:02,970 un verdadero y falso, así que un 1 y un 0, frente a OR, usted tiene puede - 868 00:43:02,970 --> 00:43:06,170 uno de ellos ha de ser verdad, o ambos pueden ser cierto, por lo 869 00:43:06,170 --> 00:43:07,130 para evaluar a true. 870 00:43:07,130 --> 00:43:10,030 ALTAVOZ 27: Así que 0 y 0 sería falso. 871 00:43:10,030 --> 00:43:10,450 ALI: Si. 872 00:43:10,450 --> 00:43:11,780 Pero si tienes 1 | 873 00:43:11,780 --> 00:43:14,290 1, que se evaluará como true. 874 00:43:14,290 --> 00:43:18,210 Pero si usted tiene un ^ 1, como hicimos nosotros, que se evalúa como false. 875 00:43:18,210 --> 00:43:21,220 Porque no es exclusivamente una es verdadera. 876 00:43:21,220 --> 00:43:26,930 ROB: Y esto puede o no ser útil, pero observe que la ^ es 877 00:43:26,930 --> 00:43:28,890 igual a simplemente tomar el | 878 00:43:28,890 --> 00:43:30,290 menos el &. 879 00:43:30,290 --> 00:43:32,250 Y en realidad se puede pensar de esta manera. 880 00:43:32,250 --> 00:43:37,290 ^ Es sólo ORing todo juntos pero sacando cualquiera de los bits que 881 00:43:37,290 --> 00:43:38,610 ambos eran ciertas. 882 00:43:38,610 --> 00:43:41,620 Así y todo vuelve donde ambos eran ciertas. 883 00:43:41,620 --> 00:43:45,850 | Devuelve todo lo que uno o ambos eran verdaderas. 884 00:43:45,850 --> 00:43:51,050 Así que resta desde el | le da la ^. 885 00:43:51,050 --> 00:43:52,040 ALI: ¿Alguna pregunta? 886 00:43:52,040 --> 00:43:53,290 Esta fue una gran cantidad de información. 887 00:43:55,980 --> 00:43:57,510 Todo el mundo bien? 888 00:43:57,510 --> 00:44:00,360 >> ROB: Podemos pasar los próximos para el siguiente problema, reducir 889 00:44:00,360 --> 00:44:01,680 ¿qué hora es? 890 00:44:01,680 --> 00:44:04,010 No necesitan esto hasta que el siguiente problema. 891 00:44:04,010 --> 00:44:07,830 ALI: Pensé que era éste. 892 00:44:07,830 --> 00:44:08,830 ROB: No lo es. 893 00:44:08,830 --> 00:44:10,085 ALI: ¿Estás seguro? 894 00:44:10,085 --> 00:44:11,300 ROB: Sí, estoy seguro. 895 00:44:11,300 --> 00:44:12,970 ALI: ¿Por qué no empezar a hacer el siguiente problema? 896 00:44:15,710 --> 00:44:19,790 El problema es, una vez más, para cambiar de minúsculas a mayúsculas, y este 897 00:44:19,790 --> 00:44:21,720 momento de usar los operadores bit a bit. 898 00:44:21,720 --> 00:44:22,970 ROB: Así lo haremos - 899 00:44:25,290 --> 00:44:29,670 vamos a empezar con la representación binaria de 'A', 'A' mayúscula, 900 00:44:29,670 --> 00:44:31,750 que es 65. 901 00:44:31,750 --> 00:44:36,150 Así que en binario - 902 00:44:39,960 --> 00:44:47,900 por lo que 'A' = 65, = que, en binario - 903 00:44:47,900 --> 00:44:51,380 Voy a meter la pata el número de 0s - que. 904 00:44:51,380 --> 00:44:53,670 ALI: ¿Eso tiene sentido para todo el mundo? 905 00:44:53,670 --> 00:44:57,620 Por lo tanto, 1, no 2s, no 4s, 8s no, no - 906 00:45:00,238 --> 00:45:07,075 no 16s, 32s, y luego no un 64. 907 00:45:07,075 --> 00:45:08,685 ROB: Sí, creo que eso es una 0s demasiados. 908 00:45:08,685 --> 00:45:09,600 ALI: Lo siento. 909 00:45:09,600 --> 00:45:13,410 >> ROB: Está bien, así que tenemos la serie 64, y tenemos el conjunto 1, y la combinación de los 910 00:45:13,410 --> 00:45:16,030 juntos, tenemos 65. 911 00:45:16,030 --> 00:45:17,470 ALI: Cool Beans? 912 00:45:17,470 --> 00:45:19,640 ROB: Así que ahora, minúsculas 'a'- 913 00:45:22,220 --> 00:45:24,260 nota 97 - 914 00:45:24,260 --> 00:45:26,370 ¿cuál es la diferencia entre 97 y 65? 915 00:45:26,370 --> 00:45:27,530 ALTAVOZ 28: 32. 916 00:45:27,530 --> 00:45:28,130 ROB: Si. 917 00:45:28,130 --> 00:45:35,920 Así que es de 32 años, que es su propio pedacito, así que eso va a ser 110001. 918 00:45:35,920 --> 00:45:41,200 Y esto va a ser verdad para todos los caracteres posibles. 919 00:45:41,200 --> 00:45:49,800 Así que si pensamos en la 'D', que va a ser 68, que va a ser 1.000.011. 920 00:45:49,800 --> 00:45:56,310 Y entonces minúscula 'd' va a ser 68 más 32, que es 100, que es 921 00:45:56,310 --> 00:46:00,010 va a ser la misma cosa que era, simplemente moviendo el 922 00:46:00,010 --> 00:46:04,300 32 otra vez, de modo 1100011. 923 00:46:04,300 --> 00:46:08,610 Así que la diferencia entre una letra mayúscula y en minúscula es sólo mover de un tirón 924 00:46:08,610 --> 00:46:10,170 que la posición de 32-bit. 925 00:46:10,170 --> 00:46:17,670 ALTAVOZ 29: ¿No es 1000100? 926 00:46:17,670 --> 00:46:19,670 ROB: Espera, es 100 - 927 00:46:19,670 --> 00:46:20,480 algo que hice mal. 928 00:46:20,480 --> 00:46:21,730 Esto no era cierto. 929 00:46:28,710 --> 00:46:31,150 Estaba pensando que se trataba de una diferencia de 3, por lo que luego me pegó 930 00:46:31,150 --> 00:46:33,970 el binario 3 al final. 931 00:46:33,970 --> 00:46:36,710 Esto debe estar en lo cierto. 932 00:46:36,710 --> 00:46:37,150 ALI: Gracias. 933 00:46:37,150 --> 00:46:38,080 Bueno para señalarlo. 934 00:46:38,080 --> 00:46:40,320 Eso fue fuerte. 935 00:46:40,320 --> 00:46:43,450 Muy bien, ¿está claro a la gente? 936 00:46:43,450 --> 00:46:45,700 >> ROB: La diferencia entre la versión en mayúsculas y minúsculas es 937 00:46:45,700 --> 00:46:49,250 siempre va a ser sólo 32, por lo que siempre va a ser un poco sola 938 00:46:49,250 --> 00:46:51,840 que necesita ser volteado para cambiar entre los dos. 939 00:46:51,840 --> 00:46:54,330 ALI: Así que en ese caso, conocer la diferencia entre la capital y un 940 00:46:54,330 --> 00:46:57,130 la minúscula es una buena cosa. 941 00:46:57,130 --> 00:47:01,950 No se encuentra en el código, pero al menos conceptualmente, es bueno. 942 00:47:01,950 --> 00:47:05,880 Así que ustedes pueden ir y código que en los Espacios ahora. 943 00:47:05,880 --> 00:47:08,580 ¿O debemos hablar de ello? 944 00:47:08,580 --> 00:47:09,760 ROB: Sólo se puede hablar de ello. 945 00:47:09,760 --> 00:47:10,680 No se. 946 00:47:10,680 --> 00:47:11,680 Ustedes pueden probar. 947 00:47:11,680 --> 00:47:13,560 Discusión entre usted mismo un poco. 948 00:47:13,560 --> 00:47:16,390 Nosotros le daremos la oportunidad de codificar. 949 00:47:16,390 --> 00:47:17,640 [Interrumpiendo VOCES] 950 00:47:19,785 --> 00:47:22,695 ALI: - está fresco 951 00:47:22,695 --> 00:47:26,590 ALTAVOZ 30: Esto es como la comedia hacker. 952 00:47:26,590 --> 00:47:31,060 ALI: Sí, estamos diciendo a la prensa, pasando a través de él. 953 00:47:31,060 --> 00:47:32,310 >> Rob: Y estamos de vuelta. 954 00:47:34,950 --> 00:47:35,405 ALI: Esto es un poco extraño. 955 00:47:35,405 --> 00:47:38,720 Siento que debería tener una estación de noticias CS50 y podríamos 956 00:47:38,720 --> 00:47:41,500 en realidad se sientan así. 957 00:47:41,500 --> 00:47:43,500 ROB: Noticias Hacker. 958 00:47:43,500 --> 00:47:46,848 ALI: Hacker News 50. 959 00:47:46,848 --> 00:47:49,210 ALI: No dude en hacer cualquier pregunta si usted está confundido. 960 00:47:52,280 --> 00:47:53,980 ROB: ¿Hay alguien atrapado? 961 00:47:53,980 --> 00:47:57,160 ALI: Sí, eso es una buena cosa. 962 00:47:57,160 --> 00:47:58,590 ALI: Espera, ¿estás atascado en su silla? 963 00:47:58,590 --> 00:48:01,010 Oh. 964 00:48:01,010 --> 00:48:02,260 Yo estaba un poco preocupado. 965 00:48:06,670 --> 00:48:12,150 ROB: Porque me acabo de dar cuenta que vamos a querer 966 00:48:12,150 --> 00:48:13,300 otro operador bit a bit. 967 00:48:13,300 --> 00:48:16,985 Por ahora, vamos a convertir mayúsculas a minúsculas. 968 00:48:23,280 --> 00:48:25,220 ALI: Lo siento, ¿todo el mundo conseguir que el anuncio? 969 00:48:25,220 --> 00:48:27,755 Vamos a pasar de mayúsculas a minúsculas. 970 00:48:27,755 --> 00:48:30,990 ROB: Luego hablaremos de minúsculas a mayúsculas después de eso. 971 00:48:33,820 --> 00:48:36,650 Oh, no. 972 00:48:36,650 --> 00:48:39,560 Tenemos un bug en el, que, supongo, nunca trató de correr. 973 00:48:39,560 --> 00:48:44,140 Que es sólo eso char c debe ser declarado fuera del bucle, porque 974 00:48:44,140 --> 00:48:45,805 su alcance está restringido en el bucle. 975 00:48:49,200 --> 00:48:53,060 ALTAVOZ 32: En este caso, es incorrecto utilizar un número? 976 00:48:53,060 --> 00:48:56,930 ROB: Eh, no es necesario. 977 00:48:56,930 --> 00:49:02,040 Si te garantiza que el capital 'A' - o, en minúscula 'a' capital menos 'A' 978 00:49:02,040 --> 00:49:09,340 era exactamente un poco, pero que no sabe que es 32 - 979 00:49:09,340 --> 00:49:13,160 las cosas funcionarían igual de bien si se tratara de la de 16 bits que se volcó - o 980 00:49:13,160 --> 00:49:14,610 no, supongo que wouldn't - 981 00:49:14,610 --> 00:49:18,270 o el bit 64 se volcó, posiblemente. 982 00:49:18,270 --> 00:49:23,230 Pero usted no necesita usar 32. 983 00:49:23,230 --> 00:49:26,141 En su lugar, puede utilizar minúsculas 'A' 'a' capital menos. 984 00:49:26,141 --> 00:49:29,340 >> ALTAVOZ 32: De acuerdo. 985 00:49:29,340 --> 00:49:32,996 ¿Qué puedes hacer si te sientes como si estuvieras escribiendo demasiado es que se puede definir 986 00:49:32,996 --> 00:49:33,435 en la parte superior. 987 00:49:33,435 --> 00:49:41,830 Así que usted puede ser como, int = diferencia minúscula 'A' 'a' capital menos. Y 988 00:49:41,830 --> 00:49:43,980 entonces usted puede escribir diferencia en cambio. 989 00:49:43,980 --> 00:49:45,110 Eso es válido. 990 00:49:45,110 --> 00:49:48,002 Pero sólo con el número 32 es una especie de - 991 00:49:48,002 --> 00:49:51,104 ALTAVOZ 33: A pesar de que es por el hecho de que es la de 32 bits? 992 00:49:51,104 --> 00:49:52,570 ALI: Si. 993 00:49:52,570 --> 00:49:54,960 ROB: No puede ser - 994 00:49:54,960 --> 00:49:57,780 la única garantía que tenemos que hacer es que la diferencia entre el 995 00:49:57,780 --> 00:49:59,480 minúsculas y mayúsculas es un bit. 996 00:49:59,480 --> 00:50:04,670 No debería importar que pasa a ser la de 32 bits que se volcó. 997 00:50:04,670 --> 00:50:06,610 Por razones de tiempo, vamos a empezar a ir por esto. 998 00:50:09,170 --> 00:50:10,370 No pasa nada si no se ha terminado. 999 00:50:10,370 --> 00:50:13,090 No se preocupe. 1000 00:50:13,090 --> 00:50:16,260 ROB: Suponiendo que c es una letra mayúscula - 1001 00:50:16,260 --> 00:50:18,030 no tenemos que asumir c es una letra mayúscula. 1002 00:50:18,030 --> 00:50:20,750 Sabemos c es una letra mayúscula después de este bucle while - 1003 00:50:20,750 --> 00:50:22,160 do-while. 1004 00:50:22,160 --> 00:50:28,590 Así que eso significa que se ve algo como esto 'A'. Así que si queremos llevar este 1005 00:50:28,590 --> 00:50:32,895 'A' a esta 'a', ¿qué es lo que tenemos que hacer? 1006 00:50:36,890 --> 00:50:41,920 Entonces, ¿cómo convertir y darle la vuelta al bit? 1007 00:50:48,040 --> 00:50:49,450 ALI: ¿Cómo darle la vuelta? 1008 00:50:49,450 --> 00:50:53,010 >> ROB: Así que sabemos que queremos darle la vuelta al de 32 bits. 1009 00:50:53,010 --> 00:50:59,722 Así que va a hacer 'a' menos 'A', o podríamos escribir 32, pero - 1010 00:50:59,722 --> 00:51:03,090 Maldita sea, es al revés. 1011 00:51:03,090 --> 00:51:07,250 ALI: Bueno por lo que Rob aquí está el cálculo de esa cifra, el número mágico 32. 1012 00:51:07,250 --> 00:51:12,000 Así que él está descubriendo que la zona donde flip poco sería. 1013 00:51:12,000 --> 00:51:14,810 Y entonces ¿qué es lo que ponemos en los signos de interrogación son? 1014 00:51:14,810 --> 00:51:16,740 ROB: ¿Cómo podemos voltear esa parte? 1015 00:51:16,740 --> 00:51:22,784 En términos de la letra mayúscula, es un 0, y queremos llegar a ser un 1. 1016 00:51:22,784 --> 00:51:23,660 ALTAVOZ 34: |. 1017 00:51:23,660 --> 00:51:24,910 ROB: Si. 1018 00:51:28,780 --> 00:51:38,190 Así que esto nos está diciendo que tenemos 'A'. Lo estamos ORing con 0 - 1019 00:51:38,190 --> 00:51:40,750 1000 - 1020 00:51:40,750 --> 00:51:44,720 y que que =. 1021 00:51:44,720 --> 00:51:45,930 ALI: ¿Eso tiene sentido para todo el mundo? 1022 00:51:45,930 --> 00:51:48,812 Podemos ir a través de él poco a poco si quieres. 1023 00:51:52,030 --> 00:51:56,300 ALTAVOZ 35: ¿Es usted [inaudible]? 1024 00:51:56,300 --> 00:51:57,590 ALI: ¿Dónde está el signo menos? 1025 00:51:57,590 --> 00:51:58,500 ROB: Oh, quieres decir aquí? 1026 00:51:58,500 --> 00:51:59,070 ALI: Oh, sí. 1027 00:51:59,070 --> 00:52:00,140 ROB: Así que supongo que esto es nosotros. 1028 00:52:00,140 --> 00:52:05,670 Podríamos decir 32 años, y ahora estamos usando operadores bit a bit. 1029 00:52:05,670 --> 00:52:07,010 ALI: No nos gustan los números mágicos. 1030 00:52:07,010 --> 00:52:10,460 No vamos a hacer eso. 1031 00:52:10,460 --> 00:52:13,592 También creo que deberíamos utilizar un operador bit a bit - 1032 00:52:13,592 --> 00:52:19,042 ALTAVOZ 36: Si utiliza un ^ A, obtendrá 32? 1033 00:52:19,042 --> 00:52:19,980 ALTAVOZ 37: Sí, creo que - 1034 00:52:19,980 --> 00:52:21,090 ROB: Sí, lo harás. 1035 00:52:21,090 --> 00:52:23,320 ALI: Así es como se habría hecho para ir 1036 00:52:23,320 --> 00:52:25,370 del capital en minúsculas. 1037 00:52:25,370 --> 00:52:31,130 >> Ahora, ¿alguien puede decirme por qué Rob y he cambiado el sistema y la forma en que se fue 1038 00:52:31,130 --> 00:52:34,040 mayúsculas de minúsculas, en lugar de minúsculas 1039 00:52:34,040 --> 00:52:37,810 mayúsculas como lo hicimos antes? 1040 00:52:37,810 --> 00:52:44,520 ¿Alguien tiene alguna idea de por qué puede ser más difícil? 1041 00:52:44,520 --> 00:52:44,880 ROB: Así que haríamos - 1042 00:52:44,880 --> 00:52:46,178 ALI: Sí, adelante. 1043 00:52:46,178 --> 00:52:49,640 ALTAVOZ 38: El operador | Sólo realmente bueno para sumar. 1044 00:52:49,640 --> 00:52:51,200 ALI: Sí, exactamente. 1045 00:52:51,200 --> 00:52:58,320 ROB: Así que lo que quiero hacer en el caso de minúsculas a mayúsculas es decir, 1046 00:52:58,320 --> 00:53:00,175 convertir esta a''- 1047 00:53:08,540 --> 00:53:14,820 por lo que queremos poner en algunos números aquí y usar algún operador de modo que se trata de 1048 00:53:14,820 --> 00:53:21,910 a capital de A. Todavía estamos utilizando probablemente 32 de alguna manera, pero ahora ¿cómo podemos 1049 00:53:21,910 --> 00:53:25,280 conseguir que esto salga a esto? 1050 00:53:40,910 --> 00:53:42,750 Así que c - 1051 00:53:42,750 --> 00:53:44,000 oh, todavía quiero que también - 1052 00:53:46,940 --> 00:53:51,055 ALI: Así que ahora si estamos conversión de minúsculas a mayúsculas de nuevo, entonces 1053 00:53:51,055 --> 00:53:55,170 hacer la operación ^, como ustedes dijeron. 1054 00:53:55,170 --> 00:53:57,650 ROB: Hay otras maneras de hacer las cosas. 1055 00:53:57,650 --> 00:54:01,680 Muchos de los operadores de bits llegar a ser muy fácil de definir en términos 1056 00:54:01,680 --> 00:54:03,460 de otros operadores a nivel de bits. 1057 00:54:03,460 --> 00:54:11,150 Así que yo no iba a usar ^ o en absoluto, pero ^ funcionaba perfectamente bien. 1058 00:54:11,150 --> 00:54:17,910 >> ALI: Bueno, por lo que vamos a ir en el último problema, que es básico - 1059 00:54:17,910 --> 00:54:22,390 el último problema es convertir algo en binario. 1060 00:54:22,390 --> 00:54:26,350 Así, por ejemplo, tiene 50 años, y luego se convierte a 1061 00:54:26,350 --> 00:54:31,400 binario, que es 110010. 1062 00:54:31,400 --> 00:54:36,010 Y yo creo que ustedes saben todo acerca binario de charla. 1063 00:54:36,010 --> 00:54:39,270 Y también se supone que no ponga ningún 0s líder en ella. 1064 00:54:39,270 --> 00:54:41,460 ROB: puede ignorar esa parte por ahora. 1065 00:54:41,460 --> 00:54:45,250 El primer paso, usted puede hacerlo de modo que hay 0s líderes. 1066 00:54:45,250 --> 00:54:49,200 Y luego podemos modificar ese no tener 0s líder, si tenemos tiempo. 1067 00:54:49,200 --> 00:54:50,630 ALI: ¿Así que no te preocupes por eso. 1068 00:54:50,630 --> 00:54:52,620 Simplemente tratar de conseguir en binario. 1069 00:54:55,880 --> 00:54:59,855 Un buen lugar para comenzar sería - 1070 00:54:59,855 --> 00:55:02,010 ROB: Tenemos que pedir un número entero. 1071 00:55:02,010 --> 00:55:03,150 ALI: Oh sí, eso es una buena idea. 1072 00:55:03,150 --> 00:55:04,170 Podemos empezar con eso. 1073 00:55:04,170 --> 00:55:06,870 Así que usted puede cambiar el sistema. 1074 00:55:06,870 --> 00:55:08,840 Así que en lugar de un personaje, ahora estamos tratando con números enteros. 1075 00:55:13,670 --> 00:55:14,920 Cool? 1076 00:55:20,630 --> 00:55:25,300 >> ROB: Y ahora es lo que nuestro do-while condición va a ser? 1077 00:55:25,300 --> 00:55:27,750 Se está pidiendo un entero no negativo. 1078 00:55:31,080 --> 00:55:34,280 ALI: ¿Cuándo queremos seguir preguntando al usuario algo más? 1079 00:55:34,280 --> 00:55:35,950 Cuando es menor que 0. 1080 00:55:35,950 --> 00:55:36,760 ALI: Así es. 1081 00:55:36,760 --> 00:55:38,010 ROB: Si bien i es menor que 0. 1082 00:55:41,090 --> 00:55:45,120 ALI: Ahora queremos convertir. 1083 00:55:45,120 --> 00:55:48,150 ¿Ustedes tienen alguna idea de qué hacer? 1084 00:55:48,150 --> 00:55:49,400 Los indicios? 1085 00:55:53,610 --> 00:55:54,984 Si. 1086 00:55:54,984 --> 00:55:57,344 ALTAVOZ 39: ¿Tenemos que convertirlo, o podemos simplemente imprimir algunos 0s y 1s 1087 00:55:57,344 --> 00:55:58,760 que sería el número correcto? 1088 00:55:58,760 --> 00:56:02,070 ¿Podría hacer un bucle for y cuente por potencias de 2? 1089 00:56:02,070 --> 00:56:03,320 ROB: Si. 1090 00:56:05,750 --> 00:56:08,425 Usted no tiene que puedo convertir a su binario - 1091 00:56:08,425 --> 00:56:13,720 la representación binaria de i no cabe dentro de i. 1092 00:56:13,720 --> 00:56:19,090 Sólo tiene que imprimir la representación binaria de i. 1093 00:56:19,090 --> 00:56:21,010 ALI: En otras palabras, usted no tiene que ir por potencias de dos. 1094 00:56:21,010 --> 00:56:23,710 ROB: Porque ya está siendo almacenados como archivos binarios, por lo que no es necesario 1095 00:56:23,710 --> 00:56:25,110 convertirlo a binario. 1096 00:56:25,110 --> 00:56:27,260 Sólo tienes que ir a través de su binario, e imprimirlo. 1097 00:56:30,080 --> 00:56:32,140 Y vas a tener que usar bit a bit, porque quiere ver 1098 00:56:32,140 --> 00:56:33,390 los bits reales. 1099 00:56:37,060 --> 00:56:38,600 No es necesario usar bit a bit, pero por favor. 1100 00:56:44,130 --> 00:56:47,160 Y eso es en realidad - 1101 00:56:47,160 --> 00:56:50,200 usted puede hacer las potencias de dos, multiplicando por 2. 1102 00:56:50,200 --> 00:56:55,120 Vamos a repasar una de las últimas dos operadores de bits binarios, 1103 00:56:55,120 --> 00:56:56,410 que es éste. 1104 00:56:56,410 --> 00:56:58,730 Así que cuando usted toma - 1105 00:56:58,730 --> 00:57:00,083 >> ALI: ¿Se puede ir a través de los dos? 1106 00:57:00,083 --> 00:57:01,440 ROB: Si. 1107 00:57:01,440 --> 00:57:03,050 Así que vamos a ir con 9. 1108 00:57:03,050 --> 00:57:05,210 Así desviación a la izquierda 9 1 - 1109 00:57:05,210 --> 00:57:12,220 lo que queda es sólo medio turno mover todos los bits a la izquierda e inserte un 0. 1110 00:57:12,220 --> 00:57:15,530 Así que nos estamos moviendo todos los bits de 9 a la izquierda 1111 00:57:15,530 --> 00:57:20,240 posición, lo que nos da - 1112 00:57:26,530 --> 00:57:31,570 Así notar hemos cambiado todo lo que queda uno, y se inserta un 0 en el 1113 00:57:31,570 --> 00:57:32,730 lado derecho. 1114 00:57:32,730 --> 00:57:36,755 Si se hubiera desplazado a la izquierda en dos, que cambiaría todo lo que dejó a dos, 1115 00:57:36,755 --> 00:57:41,950 e inserte dos 0s para llenar los vacíos. 1116 00:57:41,950 --> 00:57:43,200 Pregunta? 1117 00:57:44,890 --> 00:57:47,510 ALI: Entonces desplazamiento a la derecha hace una cosa similar. 1118 00:57:47,510 --> 00:57:53,190 Si tiene 9 desplazamiento a la derecha 1, entonces estás moviendo todo a 1119 00:57:53,190 --> 00:57:57,890 el derecho, se pierde un dígito, lo que el 100 en su lugar. 1120 00:57:57,890 --> 00:58:04,142 ROB: ¿Así que está bien que usted está perdiendo el poco que pasó a ser todo lo 1121 00:58:04,142 --> 00:58:05,200 el camino a la derecha. 1122 00:58:05,200 --> 00:58:08,850 Hay diferentes tipos de cambios correctos, pero básicamente se puede pensar en 1123 00:58:08,850 --> 00:58:11,410 desplazamiento a la derecha como se acaba de dividir por 2. 1124 00:58:11,410 --> 00:58:14,430 Y se puede pensar en desviación a la izquierda que multiplicar por 2. 1125 00:58:14,430 --> 00:58:16,490 Así que si usted convierte esto - 1126 00:58:16,490 --> 00:58:22,350 si se convierten 9 turno 1, que es igual a 10010, si en realidad fue 1127 00:58:22,350 --> 00:58:25,100 a través del binario y descubierto lo que fuese, no sería más que 18 años. 1128 00:58:25,100 --> 00:58:26,880 Acabamos de multiplicar por 2. 1129 00:58:26,880 --> 00:58:30,982 1001 desplazamiento a la izquierda 2 va a ser 36. 1130 00:58:30,982 --> 00:58:32,400 Se multiplica por 4. 1131 00:58:41,740 --> 00:58:45,360 Vale, guay, así que eso es un práctico operador bit a bit para esta. 1132 00:58:52,570 --> 00:58:53,330 Más confusión? 1133 00:58:53,330 --> 00:58:54,870 ¿Ustedes quieren probarlo? 1134 00:58:54,870 --> 00:58:58,970 O simplemente puede saltar a la derecha y ponerlo en marcha? 1135 00:58:58,970 --> 00:59:01,140 ROB: Probablemente debería saltar a la derecha adentro 1136 00:59:01,140 --> 00:59:01,880 ALI: Sí, está bien. 1137 00:59:01,880 --> 00:59:03,370 Rob: Y caminar a través de ella juntos. 1138 00:59:03,370 --> 00:59:04,440 >> ALI: Bueno, yo sólo voy a entrar en ella. 1139 00:59:04,440 --> 00:59:09,700 Así como lo dije al principio, vamos a ir sólo a través de bit por bit. 1140 00:59:09,700 --> 00:59:11,890 Así que vamos a necesitar un bucle. 1141 00:59:11,890 --> 00:59:16,730 ¿Alguien tiene una idea de la mejor clase de lazo que pasar por esto? 1142 00:59:16,730 --> 00:59:20,544 Tenemos bucles while, do-while, bucles for. 1143 00:59:20,544 --> 00:59:22,400 ALTAVOZ 40: Do-while? 1144 00:59:22,400 --> 00:59:25,150 ROB: Así que recuerda lo que dije antes acerca, sólo estamos utilizando do-while 1145 00:59:25,150 --> 00:59:27,390 bucles para obtener entrada del usuario. 1146 00:59:27,390 --> 00:59:30,890 Usted nunca será más o menos siempre los utilizan para nada más. 1147 00:59:30,890 --> 00:59:33,660 ALI: El problema con do-while es que haga algo antes de que se comprueba 1148 00:59:33,660 --> 00:59:34,470 la condición. 1149 00:59:34,470 --> 00:59:36,540 Por lo tanto, se podría hacer algo malo - 1150 00:59:36,540 --> 00:59:38,640 como, duele - 1151 00:59:38,640 --> 00:59:40,350 hacer algo que no es posible. 1152 00:59:40,350 --> 00:59:42,290 Así que usted quiere comprobar primero. 1153 00:59:42,290 --> 00:59:47,620 ROB: Hay un montón de casos en los que se puede utilizar do-while, pero la gente 1154 00:59:47,620 --> 00:59:52,120 no espere que los use a menos que sea la entrada del usuario. 1155 00:59:52,120 --> 00:59:54,215 Así que hemos utilizado nuestra do-while i para conseguirlo. 1156 00:59:57,160 --> 01:00:01,260 ¿Cuántas veces es nuestro lazo va a querer bucle? 1157 01:00:01,260 --> 01:00:04,060 Queremos bucle sobre cada uno de los bits de i. 1158 01:00:04,060 --> 01:00:06,302 ¿Cuántos bits hay en i? 1159 01:00:06,302 --> 01:00:07,266 ALTAVOZ 41: 32. 1160 01:00:07,266 --> 01:00:07,750 ALI: Si. 1161 01:00:07,750 --> 01:00:09,850 ROB: Así que hay 32 bits. 1162 01:00:09,850 --> 01:00:12,920 No queremos decir 32. 1163 01:00:12,920 --> 01:00:16,230 En su lugar, quiero decir sizeof - 1164 01:00:16,230 --> 01:00:18,226 que, ¿has visto que en la clase todavía? 1165 01:00:18,226 --> 01:00:19,100 ALI: Nope. 1166 01:00:19,100 --> 01:00:20,380 ROB: ¿Por qué dice que el uso - 1167 01:00:20,380 --> 01:00:22,160 sizeof (int) veces 8 - 1168 01:00:22,160 --> 01:00:23,530 ALI: Bueno, sizeof es - 1169 01:00:23,530 --> 01:00:27,050 >> ALTAVOZ 42: [inaudible] 1170 01:00:27,050 --> 01:00:27,440 ALI: Interesante. 1171 01:00:27,440 --> 01:00:31,610 Así, sizeof es una función incorporada en C, donde sólo le indica la 1172 01:00:31,610 --> 01:00:32,500 número de bits en - 1173 01:00:32,500 --> 01:00:33,220 ROB: Bytes. 1174 01:00:33,220 --> 01:00:34,210 ALI: Bytes, lo siento - 1175 01:00:34,210 --> 01:00:39,990 el número de bytes que tiene una variable para almacenar un valor. 1176 01:00:39,990 --> 01:00:46,205 Así que creo que pasó en la clase, entonces, un int es de 4 bytes tal vez. 1177 01:00:46,205 --> 01:00:46,610 Cool? 1178 01:00:46,610 --> 01:00:50,610 ROB: Pero usted no necesita saber que un int es de 4 bytes. 1179 01:00:50,610 --> 01:00:52,670 Usted debe ser capaz de decir - 1180 01:00:52,670 --> 01:00:55,870 usted debe utilizar sizeof (int) para obtener 4 bytes. 1181 01:00:55,870 --> 01:00:59,170 Y eso es realmente importante para algunas cosas. 1182 01:00:59,170 --> 01:01:01,650 Un int no podría ser de 4 bytes. 1183 01:01:01,650 --> 01:01:04,050 En otro equipo, un int puede ser de 8 bytes. 1184 01:01:04,050 --> 01:01:08,500 Así que tu programa no funcionará en ese equipo porque no modificable 32 1185 01:01:08,500 --> 01:01:12,230 bits cuando en ese equipo pasa a ser de 64 bits. 1186 01:01:12,230 --> 01:01:15,260 ALI: ¿Así que usted tenga el número total de bits que te quiero dar marcha atrás. 1187 01:01:15,260 --> 01:01:17,480 Rob: Y es la diferencia entre un byte y un poco de que no 1188 01:01:17,480 --> 01:01:19,100 son 8 bits en un byte. 1189 01:01:19,100 --> 01:01:22,110 Así que sizeof (int) devuelve 4 bytes, entonces tenemos que multiplicar ese 1190 01:01:22,110 --> 01:01:24,420 por 8 para obtener 32 bits. 1191 01:01:24,420 --> 01:01:27,680 >> ALI: Bueno, por lo que sabemos el máximo y sabemos que queremos ir de - 1192 01:01:27,680 --> 01:01:29,260 queremos ir a través de todos ellos. 1193 01:01:29,260 --> 01:01:32,950 Así que queremos ir de 0 a numBits. 1194 01:01:32,950 --> 01:01:37,160 Entonces, ¿alguien sabe cómo escribir el bucle para eso? 1195 01:01:37,160 --> 01:01:37,790 ¿Alguien? 1196 01:01:37,790 --> 01:01:39,680 ALTAVOZ 43: [inaudible] 1197 01:01:39,680 --> 01:01:44,130 ALI: ¿Así que quieres atravesar el número i del bit cero a la 1198 01:01:44,130 --> 01:01:47,840 bit primero, el segundo bit, el tercer bit, todo el camino a numBits. 1199 01:01:47,840 --> 01:01:50,972 El número máximo de bits que se puede llegar. 1200 01:01:54,420 --> 01:01:57,780 ROB: ¿Cuál es el lazo común que utilizamos lo que queremos hacer algo veces x? 1201 01:01:57,780 --> 01:01:58,280 ALI: For. 1202 01:01:58,280 --> 01:01:59,280 Perfecto. 1203 01:01:59,280 --> 01:02:00,440 Así que tenemos para. 1204 01:02:00,440 --> 01:02:05,242 Y luego vamos a crear un iterador, que no va a ser i. 1205 01:02:05,242 --> 01:02:06,850 ROB: j. 1206 01:02:06,850 --> 01:02:08,080 ALI: J = 0. 1207 01:02:08,080 --> 01:02:09,740 Así que vamos a empezar a 0. 1208 01:02:09,740 --> 01:02:13,110 Y entonces vamos a tener la condición para estar seguro, mientras que usted está 1209 01:02:13,110 --> 01:02:14,968 pasando a través de él cada vez - 1210 01:02:14,968 --> 01:02:16,960 [Interrumpiendo VOCES] 1211 01:02:16,960 --> 01:02:17,960 ROB: j. 1212 01:02:17,960 --> 01:02:19,970 ALI: j es menor que numBits. 1213 01:02:19,970 --> 01:02:23,680 Así que no quiero hacer el real es igual a uno, porque son numBits 1214 01:02:23,680 --> 01:02:25,365 total, y empezamos a 0. 1215 01:02:25,365 --> 01:02:26,360 Así que estamos realmente va a tener - 1216 01:02:26,360 --> 01:02:27,400 ALTAVOZ 44: Oh. 1217 01:02:27,400 --> 01:02:29,300 ALI: Los índices no terminan en numBits menos 1. 1218 01:02:29,300 --> 01:02:34,070 ROB: Nosotros etiquetar los bits 0 a 31, no se les etiqueta 1 a 32. 1219 01:02:34,070 --> 01:02:36,970 ALI: Y luego vamos a incrementar cada vez a uno, porque queremos 1220 01:02:36,970 --> 01:02:38,050 revisar cada uno de ellos. 1221 01:02:38,050 --> 01:02:39,851 Así que vamos a ir j + +. 1222 01:02:39,851 --> 01:02:42,740 >> ALTAVOZ 45: ¿Por qué haces eso? 1223 01:02:42,740 --> 01:02:46,100 ALTAVOZ 46: ¿Por qué va usted a través de cada bit? 1224 01:02:46,100 --> 01:02:49,310 ROB: ¿Así que quieres ir a través de cada bit y - 1225 01:02:52,780 --> 01:02:55,100 Así que digamos que tenemos un número. 1226 01:02:55,100 --> 01:02:56,195 ALI: 68. 1227 01:02:56,195 --> 01:02:57,470 ROB: Podemos utilizar 68. 1228 01:02:57,470 --> 01:03:00,450 Así que el binario que va a ser 100100. 1229 01:03:00,450 --> 01:03:05,540 Así que esto está dentro de i y queremos ir sobre cada uno de estos bits. 1230 01:03:05,540 --> 01:03:06,450 Es un 1? 1231 01:03:06,450 --> 01:03:07,320 Imprimir 1. 1232 01:03:07,320 --> 01:03:08,120 ¿Es un 0? 1233 01:03:08,120 --> 01:03:09,100 Imprimir 0. 1234 01:03:09,100 --> 01:03:10,530 A continuación, pasamos a la siguiente parte. 1235 01:03:10,530 --> 01:03:11,210 Es un 1? 1236 01:03:11,210 --> 01:03:11,610 Imprimir 1. 1237 01:03:11,610 --> 01:03:11,830 Es un 0? 1238 01:03:11,830 --> 01:03:13,080 Imprimir 0. 1239 01:03:14,880 --> 01:03:16,710 ALI: Cool, está bien. 1240 01:03:16,710 --> 01:03:22,880 Ahora estamos en el índice correcto para que ese poco es. 1241 01:03:25,380 --> 01:03:28,080 ¿Cómo podemos comprobar que un particular? 1242 01:03:28,080 --> 01:03:33,130 Digamos que estamos en j = 0, por lo que desee comprobar el índice 0 del bit. 1243 01:03:33,130 --> 01:03:37,980 Así, en este caso, esta. 1244 01:03:37,980 --> 01:03:41,930 >> Así que ahora, ¿cómo hacemos para comprobar - oh, sería éste. 1245 01:03:41,930 --> 01:03:42,810 ROB: Si. 1246 01:03:42,810 --> 01:03:44,310 ALI: Lo siento. 1247 01:03:44,310 --> 01:03:47,930 ¿Cómo hacemos para comprobar que uno, en un sentido? 1248 01:03:47,930 --> 01:03:52,030 ¿Cómo podemos comprobar si es un 0 o un 1? 1249 01:03:52,030 --> 01:03:52,730 Bueno let's - 1250 01:03:52,730 --> 01:03:53,940 CLASE: Y 1? 1251 01:03:53,940 --> 01:03:54,390 ALI: ¿Y? 1252 01:03:54,390 --> 01:03:55,010 Si. 1253 01:03:55,010 --> 01:03:57,810 ROB: Así que vamos a decir que ya tenemos una. 1254 01:03:57,810 --> 01:04:02,470 Entonces esto y, se devolverá si se trataba de un 1 o un 0. 1255 01:04:05,580 --> 01:04:08,200 ALI: Así que podemos ir hacia abajo. 1256 01:04:08,200 --> 01:04:10,695 Y podemos hacer como ustedes, dijo, de hacer y la función. 1257 01:04:13,810 --> 01:04:15,560 ROB: int - 1258 01:04:15,560 --> 01:04:18,290 ¿Cómo quiero decir esto - 1259 01:04:18,290 --> 01:04:24,250 Isone = i. 1260 01:04:24,250 --> 01:04:29,770 Y para el primer bit que estemos viendo, estamos haciendo i & 1. 1261 01:04:29,770 --> 01:04:33,302 Ahora, ¿qué vamos a querer y por el segundo bit? 1262 01:04:33,302 --> 01:04:34,294 ALTAVOZ 47: 2. 1263 01:04:34,294 --> 01:04:36,110 ROB: Sí, el segundo que estamos en 2. 1264 01:04:36,110 --> 01:04:39,100 ALI: Se dará cuenta de que el 1 se ha movido hacia la izquierda. 1265 01:04:39,100 --> 01:04:44,320 Así que hemos aprendido todos los operadores bit a bit para hacer esa función? 1266 01:04:44,320 --> 01:04:45,160 ROB: La siguiente - 1267 01:04:45,160 --> 01:04:46,280 ALI: Sí, claro, eso es. 1268 01:04:46,280 --> 01:04:48,670 Así que es una desviación a la izquierda. 1269 01:04:48,670 --> 01:04:51,120 En lugar de siempre consultar con 1, se van a cambiar. 1270 01:04:51,120 --> 01:04:53,470 ¿Y cuántas veces se lo vamos a cambiar? 1271 01:04:53,470 --> 01:04:59,340 Si estamos comprobando el cero entonces nos vamos a mover por encima de cero. 1272 01:04:59,340 --> 01:04:59,975 Sí, exactamente. 1273 01:04:59,975 --> 01:05:02,090 Así lo dejó pasar por ella j. 1274 01:05:02,090 --> 01:05:02,550 Perfecto. 1275 01:05:02,550 --> 01:05:03,550 Así que ahora que sabemos - 1276 01:05:03,550 --> 01:05:06,450 tenemos este int de si es 1, y luego - 1277 01:05:10,690 --> 01:05:14,670 por lo que Rob es una especie de trampa aquí - 1278 01:05:14,670 --> 01:05:18,090 y lo que ahora iba por delante y acaba diciendo que si realmente es 1, 1279 01:05:18,090 --> 01:05:23,540 porque un resultado verdadero, así que no tienes que decir isf Isone es igual a 1 - 1280 01:05:23,540 --> 01:05:29,210 por lo que si Isone, entonces imprimir 1, y de lo contrario imprimir 0. 1281 01:05:29,210 --> 01:05:33,350 >> ROB: Así que nuestro programa tiene un error total. 1282 01:05:33,350 --> 01:05:35,845 Bueno, las preguntas sobre esto primero. 1283 01:05:35,845 --> 01:05:41,692 ALTAVOZ 48: ¿Podrás poner el Isone dentro de la pieza y operación de cuatro 1284 01:05:41,692 --> 01:05:47,804 entonces sí lo han cambiando a medida que la última parte? 1285 01:05:47,804 --> 01:05:50,050 Así Isone es igual a 1 y, a continuación - 1286 01:05:50,050 --> 01:05:53,140 Rob: Sí, se puede. 1287 01:05:53,140 --> 01:05:57,200 De hecho, podemos demostrar que una vez que se corrige el error que estoy a punto de 1288 01:05:57,200 --> 01:06:00,050 discutir con todos vosotros. 1289 01:06:00,050 --> 01:06:03,470 Tenga en cuenta el orden en que van las cosas. 1290 01:06:03,470 --> 01:06:10,570 Teniendo en cuenta esta representación binaria, estamos comenzando con el bit cero. 1291 01:06:10,570 --> 01:06:13,010 Si es un 0, entonces estamos imprimiendo - 1292 01:06:13,010 --> 01:06:15,620 bien, es un 0, por lo que estamos imprimiendo 0. 1293 01:06:15,620 --> 01:06:16,860 Luego vamos al segundo bit. 1294 01:06:16,860 --> 01:06:19,100 Se trata de un 0, por lo que imprimimos 0. 1295 01:06:19,100 --> 01:06:20,290 Luego vamos al tercer bit. 1296 01:06:20,290 --> 01:06:22,950 Es un 1, por lo que imprimimos 1. 1297 01:06:22,950 --> 01:06:24,580 ALI: Así que va hacia atrás. 1298 01:06:24,580 --> 01:06:27,906 Entonces, ¿cómo es lo que ustedes sugieren que arreglar eso y van por otro camino? 1299 01:06:27,906 --> 01:06:28,900 ALTAVOZ 49: [inaudible] 1300 01:06:28,900 --> 01:06:29,490 ROB: Si. 1301 01:06:29,490 --> 01:06:34,500 Así que en vez de ir de 0 a numBits, iremos a partir de fragmentos numBits a 0. 1302 01:06:34,500 --> 01:06:35,600 ALI: Así que [inaudible] 1303 01:06:35,600 --> 01:06:36,940 Siempre se puede ir a otro lado. 1304 01:06:36,940 --> 01:06:38,970 ROB: NumBits menos 1, porque esa es la última nubmer - 1305 01:06:38,970 --> 01:06:41,160 ALI: Porque va de 0 a 31. 1306 01:06:41,160 --> 01:06:44,420 Y entonces siempre vamos a asegurarnos de que es mayor que 0 para que no te vayas 1307 01:06:44,420 --> 01:06:46,100 demasiado a la derecha. 1308 01:06:46,100 --> 01:06:48,800 Y luego que siempre resta por 1 para ir a la derecha. 1309 01:06:48,800 --> 01:06:52,240 >> ROB: Así que ahora tenemos un bucle de retorno, y el número está de vuelta en la impresión 1310 01:06:52,240 --> 01:06:53,586 en la forma correcta. 1311 01:06:53,586 --> 01:06:57,560 ALTAVOZ 50: ¿Usted no tiene que cambiar la cosa cambio también? 1312 01:06:57,560 --> 01:06:58,810 ALI: ¿Entonces no. 1313 01:07:03,810 --> 01:07:06,470 ROB: Estamos haciendo las operaciones exactamente los mismos, excepto que ahora 1314 01:07:06,470 --> 01:07:07,470 en el orden inverso. 1315 01:07:07,470 --> 01:07:14,170 Así que en lugar de hacer el cambio por numBits menos 1 para obtener lo que esta 1316 01:07:14,170 --> 01:07:17,430 es poco, en lugar de hacer eso último, sólo tendremos que hacer primero. 1317 01:07:19,970 --> 01:07:22,970 Al revertir esta aquí, invertimos el orden de todas las cosas 1318 01:07:22,970 --> 01:07:24,190 que sucede en el interior. 1319 01:07:24,190 --> 01:07:28,610 Pero no queremos cambiar lo que sucede en el interior del todo. 1320 01:07:28,610 --> 01:07:29,860 ALI: ¿Eso tiene sentido? 1321 01:07:32,240 --> 01:07:33,660 El procesamiento? 1322 01:07:33,660 --> 01:07:41,200 Bien, ¿alguien más tiene alguna pregunta conceptuales otros? 1323 01:07:41,200 --> 01:07:45,030 ALI: Antes de entrar en su punto que es - 1324 01:07:45,030 --> 01:07:46,280 ALI: Bueno, bueno ir. 1325 01:07:48,350 --> 01:07:53,160 Rob: En lugar de utilizar j para ser nuestro - 1326 01:07:55,780 --> 01:08:00,550 en lugar de utilizar j para cambiar por siempre, como un j desviación a la izquierda, creo que lo 1327 01:08:00,550 --> 01:08:04,120 usted está diciendo es así, para sí mismo j usar. 1328 01:08:04,120 --> 01:08:09,560 Así que para j - 1329 01:08:09,560 --> 01:08:14,656 Supongo que esta es la dura - j = 1 << 31. 1330 01:08:14,656 --> 01:08:16,200 ¿Es eso lo que quieres? 1331 01:08:16,200 --> 01:08:18,470 Creo que es << 31. 1332 01:08:18,470 --> 01:08:22,840 j> = 1. 1333 01:08:22,840 --> 01:08:32,319 j >>, >> Isone, i & j - 1334 01:08:32,319 --> 01:08:35,620 por lo que ahora en lugar de usar - 1335 01:08:35,620 --> 01:08:38,370 ALI: Está en constante movimiento j en lugar de tener un 1336 01:08:38,370 --> 01:08:40,520 índice para comprobarlo. 1337 01:08:40,520 --> 01:08:42,130 No es tan malo. 1338 01:08:42,130 --> 01:08:43,960 Estamos utilizando el mismo tipo de lógica. 1339 01:08:43,960 --> 01:08:46,202 Así que si vas de nuevo - 1340 01:08:46,202 --> 01:08:50,020 oh, pero va a perder. 1341 01:08:50,020 --> 01:08:51,380 Está bien, te vas a escribirlo de nuevo. 1342 01:08:51,380 --> 01:08:56,880 Si usted nota que tenemos una cantidad j << de veces, y se nos 1343 01:08:56,880 --> 01:09:02,279 j incrementar cada vez por un incremento, pero esta vez en vez 1344 01:09:02,279 --> 01:09:06,010 que están haciendo el incremento de la j en la parte superior dentro del bucle for. 1345 01:09:06,010 --> 01:09:10,890 Así que en vez de estar siempre en movimiento hacia abajo - 1346 01:09:10,890 --> 01:09:15,220 ROB: La primera iteración del bucle for, tenemos j es 10000. 1347 01:09:15,220 --> 01:09:20,000 La siguiente iteración del bucle for es 01000. 1348 01:09:20,000 --> 01:09:22,380 La siguiente iteración es eso. 1349 01:09:22,380 --> 01:09:26,800 Y el 1 es sólo va a seguir propagando hacia abajo hasta que llegamos a la muy 1350 01:09:26,800 --> 01:09:29,729 final, donde ahora es esto. 1351 01:09:29,729 --> 01:09:33,990 El siguiente, el 1 va a ser empujado, y j ya no es mayor 1352 01:09:33,990 --> 01:09:35,090 que o igual a 1. 1353 01:09:35,090 --> 01:09:38,380 También podría poner mayor que 0, la misma diferencia. 1354 01:09:38,380 --> 01:09:41,580 Y eso es todo. 1355 01:09:41,580 --> 01:09:43,720 ¿Preguntas? 1356 01:09:43,720 --> 01:09:44,760 Si. 1357 01:09:44,760 --> 01:09:49,740 >> ALTAVOZ 51: [inaudible] 1358 01:09:49,740 --> 01:09:51,729 ROB: Así que ese es el mismo que - 1359 01:09:51,729 --> 01:09:57,270 ¿has visto j + = 3? 1360 01:09:57,270 --> 01:10:00,960 Así que este es el mismo que j = j + 3? 1361 01:10:00,960 --> 01:10:05,560 Usted puede hacer eso por casi cualquier operador en C. Así j >> = 3 es 1362 01:10:05,560 --> 01:10:10,490 igual a j = j >> 3. 1363 01:10:13,980 --> 01:10:16,760 Así que también funciona con los operadores bit a bit. 1364 01:10:16,760 --> 01:10:19,630 Y no debería haber puesto aquí 31. 1365 01:10:19,630 --> 01:10:23,790 Debería haber puesto numBits - 1. 1366 01:10:23,790 --> 01:10:25,380 ALI: Yay, no hay números mágicos. 1367 01:10:25,380 --> 01:10:29,070 Bueno, son las 4:00, así que si ustedes tienen que ir - pero ¿tiene sentido? 1368 01:10:29,070 --> 01:10:30,320 ¿Ustedes tienen alguna otra pregunta? 1369 01:10:33,920 --> 01:10:38,470 ROB: Yo también iba a tirar que si queríamos - 1370 01:10:38,470 --> 01:10:41,326 se discutió operador ternario en absoluto? 1371 01:10:41,326 --> 01:10:42,730 ALI: No. 1372 01:10:42,730 --> 01:10:45,090 Está bien. 1373 01:10:45,090 --> 01:10:46,970 ROB: Así que usted puede ver en él para la próxima vez. 1374 01:10:51,030 --> 01:10:52,080 ALI: Bueno, en realidad? 1375 01:10:52,080 --> 01:10:53,150 Ahora estás presumiendo. 1376 01:10:53,150 --> 01:10:54,210 ROB: No, ahora es - 1377 01:10:54,210 --> 01:11:00,490 esto es lo que hace que la gente interesada, y ahora van a ir a buscar en ella. 1378 01:11:00,490 --> 01:11:02,640 Así que ahora, que hace lo mismo, en un solo paso. 1379 01:11:05,150 --> 01:11:10,950 Así que primero comprobar, es i & j 1? 1380 01:11:10,950 --> 01:11:12,530 ¿Es cierto? 1381 01:11:12,530 --> 01:11:17,000 Si es así, escriba un 1, de lo contrario, imprima un 0. 1382 01:11:17,000 --> 01:11:19,190 ALI: Pero hacerlo de la otra forma es perfectamente bien también. 1383 01:11:19,190 --> 01:11:20,920 Tiene la misma lógica. 1384 01:11:20,920 --> 01:11:22,730 Así que no es como uno es - 1385 01:11:22,730 --> 01:11:24,620 ROB: En este punto, podemos deshacernos de esas llaves, porque es sólo 1386 01:11:24,620 --> 01:11:27,190 una línea de bucle. 1387 01:11:27,190 --> 01:11:29,370 ALI: Bueno, por lo que no tiene sentido? 1388 01:11:29,370 --> 01:11:30,370 Eso era una especie de salto. 1389 01:11:30,370 --> 01:11:34,870 Pero fue sólo un poco de sintaxis, más. 1390 01:11:34,870 --> 01:11:36,250 >> Cool? 1391 01:11:36,250 --> 01:11:37,500 ¿Alguna otra pregunta? 1392 01:11:40,880 --> 01:11:41,570 ROB: Muy bien. 1393 01:11:41,570 --> 01:11:42,310 ALI: Bueno, genial. 1394 01:11:42,310 --> 01:11:43,560 Gracias por venir a la sección.