1 00:00:01,984 --> 00:00:07,450 [Powered by Google Translate] [Electronic SONS estático] 2 00:00:07,450 --> 00:00:11,320 ROB: Ok, então o que nós apenas trouxe a CS50 é Spaces. 3 00:00:11,320 --> 00:00:12,325 ALI: Espere, espere de volta. 4 00:00:12,325 --> 00:00:13,175 Bem-vindo à seção! 5 00:00:13,175 --> 00:00:13,860 ROB: Bem-vindo à seção! 6 00:00:13,860 --> 00:00:14,742 ALI: Yay! 7 00:00:14,742 --> 00:00:16,840 ROB: Supersection! 8 00:00:16,840 --> 00:00:18,610 ALI: Eu sou Ali e este é Rob. 9 00:00:18,610 --> 00:00:20,680 Ok, agora vamos explicar Spaces. 10 00:00:20,680 --> 00:00:23,650 ROB: Então, o que só trouxe você é CS50 Spaces. 11 00:00:23,650 --> 00:00:29,260 Você vai usar muito isso em suas seções neste semestre. 12 00:00:29,260 --> 00:00:32,110 Basicamente, nós já tivemos de baixar o aparelho. 13 00:00:32,110 --> 00:00:38,630 E você pode pensar CS50 espaços como uma interface web conversando com um aparelho 14 00:00:38,630 --> 00:00:40,670 que temos em algum servidor em algum lugar. 15 00:00:40,670 --> 00:00:42,990 Assim, você pode executar o seu código neste interface, e vamos 16 00:00:42,990 --> 00:00:44,180 ver como fazer as coisas. 17 00:00:44,180 --> 00:00:48,200 Você também pode olhar o código de outras pessoas na seção, e - 18 00:00:48,200 --> 00:00:51,920 ALI: E como algumas pessoas descobriram, você pode conversar pessoas do lado. 19 00:00:51,920 --> 00:00:54,230 E todos nós vamos vê-lo, também, de modo que é emocionante. 20 00:00:54,230 --> 00:00:55,655 Venha, venha sentar-se. 21 00:00:55,655 --> 00:00:57,060 Sente-se. 22 00:00:57,060 --> 00:00:57,840 >> ROB: Então, as seções são - 23 00:00:57,840 --> 00:00:59,380 ALI: Não, não, vocês podem vir. 24 00:00:59,380 --> 00:01:03,356 ROB: Seções vão ser muito mais interativo neste semestre. 25 00:01:03,356 --> 00:01:04,180 ALI: Ah, ele é como - 26 00:01:04,180 --> 00:01:05,840 Oh. 27 00:01:05,840 --> 00:01:07,530 Ok, legal. 28 00:01:07,530 --> 00:01:15,630 Então, se vocês estão apenas chegando, você pode ir a este link, se eu conseguir 29 00:01:15,630 --> 00:01:20,190 ali, bem ali. 30 00:01:20,190 --> 00:01:22,780 Nós realmente não podemos escrevê-lo, porque não há espaço na placa, mas este link 31 00:01:22,780 --> 00:01:27,160 aqui, ir para que em seus computadores, e você entrará CS50 32 00:01:27,160 --> 00:01:29,810 Espaços, o que é uma coisa muito legal. 33 00:01:32,460 --> 00:01:33,830 Okay. 34 00:01:33,830 --> 00:01:35,370 Você tem um problema? 35 00:01:35,370 --> 00:01:39,930 ROB: Então você pode encontrar os problemas - 36 00:01:39,930 --> 00:01:42,720 precisamos ser capazes de escrever isso em algum lugar. 37 00:01:42,720 --> 00:01:50,040 Então, se você vai para cs50.net/psets e este é o supersection hacker - 38 00:01:50,040 --> 00:01:55,870 e você vai para a Edição Hacker de pset um, olhar para a especificação 39 00:01:55,870 --> 00:01:57,620 em algum lugar abaixo na página - 40 00:02:01,940 --> 00:02:04,280 >> ALI: Então, basicamente, enquanto Rob está olhando, o que vamos fazer em 41 00:02:04,280 --> 00:02:06,650 hoje seção é, há uma seção de problemas - 42 00:02:06,650 --> 00:02:07,600 ROB: - na página oito. 43 00:02:07,600 --> 00:02:09,300 ALI: - chamado de seção de problemas - 44 00:02:09,300 --> 00:02:10,280 ROB: Seção de perguntas. 45 00:02:10,280 --> 00:02:11,630 ALI: Desculpe, uma seção de perguntas. 46 00:02:11,630 --> 00:02:14,450 E esses são o que nós vamos passar por cima - 47 00:02:14,450 --> 00:02:16,370 esses são o que nós vamos passar por cima de hoje na seção. 48 00:02:16,370 --> 00:02:20,010 E nós estamos indo para codificá-lo em espaços CS50, e espero que funcione. 49 00:02:20,010 --> 00:02:22,210 E nós podemos apenas falar por eles. 50 00:02:22,210 --> 00:02:24,510 E vocês podem fazer perguntas sempre que você sente - 51 00:02:24,510 --> 00:02:27,890 >> ROB: Então, isso está começando a ser uma coisa comum com a maioria Série de Exercícios. 52 00:02:27,890 --> 00:02:31,000 Acho que, com esta, ele diz que você não tem que entregar essas questões dentro 53 00:02:31,000 --> 00:02:36,780 Mas a idéia é que essas questões são colocadas na pset, e você pode vir 54 00:02:36,780 --> 00:02:39,790 a seção de ter essas perguntas respondidas. 55 00:02:39,790 --> 00:02:42,730 Ou, se você não vir a seção, você pode respondê-las por conta própria ou obter 56 00:02:42,730 --> 00:02:44,250 ajudar em horário de expediente ou algo assim. 57 00:02:44,250 --> 00:02:47,540 Mas estas são questões que deveriam prepará-lo para o conjunto de problemas. 58 00:02:47,540 --> 00:02:50,910 E na edição de hacker, um monte de perguntas pode ser apenas sobre 59 00:02:50,910 --> 00:02:54,170 expandir o seu conhecimento CS atual. 60 00:02:54,170 --> 00:02:55,370 ALI: Sim, muito bem. 61 00:02:55,370 --> 00:02:57,950 >> Ok, então, é todo mundo na CS50 espaços? 62 00:02:57,950 --> 00:02:59,457 Oi, vêm dentro 63 00:02:59,457 --> 00:03:00,828 COLUNA 1: Podemos ver a URL mais uma vez? 64 00:03:04,030 --> 00:03:07,000 Rob: Sim, isso será mais fácil uma vez que você está realmente em suas seções, e 65 00:03:07,000 --> 00:03:10,760 o TF só pode enviar o URL de antemão. 66 00:03:10,760 --> 00:03:11,870 ALI: Yay, sente-se. 67 00:03:11,870 --> 00:03:13,170 Há lugares aqui. 68 00:03:13,170 --> 00:03:14,420 A frente não é tão ruim assim. 69 00:03:17,112 --> 00:03:18,362 O quê? 70 00:03:20,650 --> 00:03:23,590 Então, CS50 Spaces, estamos chegando lá. 71 00:03:23,590 --> 00:03:26,760 Alguém tem alguma dúvida antes de entrar - o que? 72 00:03:26,760 --> 00:03:28,060 ROB: Não há nem mesmo qualquer giz. 73 00:03:28,060 --> 00:03:29,270 [Inaudível] 74 00:03:29,270 --> 00:03:31,540 ALI: Desculpe. 75 00:03:31,540 --> 00:03:32,950 Você pode usar suas unhas? 76 00:03:32,950 --> 00:03:38,210 Nós estamos em um quarto muito baixa tecnologia para uma classe muito alta tecnologia. 77 00:03:38,210 --> 00:03:40,795 Ok, é uma espécie cada um de bom? 78 00:03:40,795 --> 00:03:44,310 Alguém tem ainda dúvidas sobre isso? 79 00:03:44,310 --> 00:03:48,540 Como eu disse antes, nós estamos indo ir através da seção de perguntas em 80 00:03:48,540 --> 00:03:51,340 as especificações pset. 81 00:03:51,340 --> 00:03:53,490 Portanto, não há apenas um par de problemas que vamos 82 00:03:53,490 --> 00:03:57,490 codificar em CS50 Spaces. 83 00:03:57,490 --> 00:03:58,740 Estão todos bem? 84 00:04:01,010 --> 00:04:01,360 Okay. 85 00:04:01,360 --> 00:04:02,312 Bom? 86 00:04:02,312 --> 00:04:04,260 ROB: Você tem um laptop? 87 00:04:04,260 --> 00:04:05,150 ALI: Você pode sair com Lucas. 88 00:04:05,150 --> 00:04:06,960 Ele está sentado ao seu lado. 89 00:04:06,960 --> 00:04:10,030 Tempo de ligação. 90 00:04:10,030 --> 00:04:10,990 >> ROB: Então, comece com o primeiro problema? 91 00:04:10,990 --> 00:04:11,260 ALI: Yeah. 92 00:04:11,260 --> 00:04:11,820 Podemos começar. 93 00:04:11,820 --> 00:04:12,390 Você quer que eu - 94 00:04:12,390 --> 00:04:13,700 Eu posso ir. 95 00:04:13,700 --> 00:04:16,666 Então, vamos para as especificações pset. 96 00:04:16,666 --> 00:04:17,640 Ah, por que é - 97 00:04:17,640 --> 00:04:18,890 ROB: Controle. 98 00:04:21,769 --> 00:04:25,770 ALI: Ok, então vamos em resposta essas coisas também? 99 00:04:25,770 --> 00:04:26,190 ROB: Ah, sim. 100 00:04:26,190 --> 00:04:27,280 Então - 101 00:04:27,280 --> 00:04:29,675 ALI: Oh, fez curtas estrelados por todos relógio de Rob? 102 00:04:32,430 --> 00:04:33,360 Ok, legal. 103 00:04:33,360 --> 00:04:36,870 ROB: Sim, eu não acho que necessariamente esperado que você tenha 104 00:04:36,870 --> 00:04:40,650 assisti-lo antes de chegar a este ponto, mas podemos discutir os 105 00:04:40,650 --> 00:04:43,870 problemas de antecedência, uma vez que eles estão na seção de perguntas coisas. 106 00:04:43,870 --> 00:04:46,480 Então, se você ainda não assistiu, não se preocupe. 107 00:04:46,480 --> 00:04:48,630 Aqueles que têm pode tentar responder. 108 00:04:48,630 --> 00:04:53,875 >> Então, a primeira pergunta, o que é um pré-processador, como o # include 109 00:04:53,875 --> 00:04:56,080 relacionar? 110 00:04:56,080 --> 00:04:58,440 Então, alguém tem resposta para isso? 111 00:04:58,440 --> 00:04:59,320 Ali: Vocês podem conversar. 112 00:04:59,320 --> 00:05:00,308 Claro, vá em frente. 113 00:05:00,308 --> 00:05:03,766 SPEAKER 2: # include é um código pré-escrito, e em vez de 114 00:05:03,766 --> 00:05:08,706 copiá-lo e colá-lo em seu programa, por apenas dizendo que incluem, 115 00:05:08,706 --> 00:05:14,140 o pré-processador sabe que ele está lá e que deve adicioná-lo em 116 00:05:14,140 --> 00:05:17,520 mais tarde ou antes de mais nada acontece. 117 00:05:17,520 --> 00:05:18,466 ALI: Sim, incrível. 118 00:05:18,466 --> 00:05:19,440 Cool. 119 00:05:19,440 --> 00:05:23,820 ROB: Então, quando você está realmente compilar um programa, o pré-processador é este 120 00:05:23,820 --> 00:05:25,230 primeiro passo. 121 00:05:25,230 --> 00:05:27,620 Compilação acontece em quatro grandes passos. 122 00:05:27,620 --> 00:05:31,120 Assim, o pré-processador é o primeiro grande, e é esse cara que vai 123 00:05:31,120 --> 00:05:33,510 através de e olha para todos estes símbolos de hash. 124 00:05:33,510 --> 00:05:36,610 E qualquer linha que começa com um hash, o pré-processador olha para ele e vê 125 00:05:36,610 --> 00:05:37,880 se ele pode processá-lo. 126 00:05:37,880 --> 00:05:43,800 Então # include diz ao pré-processador para procurar alguma cs50.h 127 00:05:43,800 --> 00:05:47,830 arquivar e simplesmente copiar e colar o seu conteúdo para este arquivo. 128 00:05:47,830 --> 00:05:50,970 Então você pode realmente # include o que quiser, mas é principalmente vai ser 129 00:05:50,970 --> 00:05:53,700 . Arquivos h. 130 00:05:53,700 --> 00:05:55,820 Nós não chegamos a # define ainda, então isso não importa. 131 00:05:55,820 --> 00:05:57,620 ALI: Sim, nós somos bons nisso. 132 00:05:57,620 --> 00:05:59,450 Alguém tem alguma dúvida sobre isso? 133 00:05:59,450 --> 00:06:01,090 Somos bons? 134 00:06:01,090 --> 00:06:02,430 Próxima pergunta. 135 00:06:02,430 --> 00:06:07,096 >> SPEAKER 3: No curta, havia algo sobre c também.? 136 00:06:07,096 --> 00:06:09,110 Isso é relevante ou é irrelevante? 137 00:06:09,110 --> 00:06:11,210 ROB: Sobre c com o processador pré-.? 138 00:06:11,210 --> 00:06:13,990 SPEAKER 3: Sim, ou eu fiz alguma coisa? 139 00:06:13,990 --> 00:06:18,290 ROB: Então o curto pode ter sido mostrar o pré-processamento este arquivo e 140 00:06:18,290 --> 00:06:24,240 . gerá-lo para outro arquivo c, de modo que você pode pré-processar este arquivo - 141 00:06:24,240 --> 00:06:30,000 quando você acabou de correr como, fazer Olá ou hello.c bumbum, você está fazendo tudo 142 00:06:30,000 --> 00:06:31,730 a compilação de um grande passo. 143 00:06:31,730 --> 00:06:34,780 Mas você pode fazê-lo explicitamente em suas etapas separadas. 144 00:06:34,780 --> 00:06:36,950 Então, primeiro você pode pré-processá-lo. 145 00:06:36,950 --> 00:06:42,260 Depois, você pode compilar, então você pode montar, e então você pode ligar. 146 00:06:42,260 --> 00:06:43,620 Nós vamos chegar aos outros. 147 00:06:43,620 --> 00:06:47,410 Mas o pré-processamento, você tipo de processo de pré-lo, e, em seguida, ele vai para 148 00:06:47,410 --> 00:06:49,270 outro. arquivo c. 149 00:06:49,270 --> 00:06:51,430 Porque pré-processamento realmente não muda nada. 150 00:06:51,430 --> 00:06:52,800 É só um monte de copiar e colar. 151 00:06:52,800 --> 00:06:56,760 Você pode copiar e colar manualmente você mesmo. 152 00:06:56,760 --> 00:06:59,630 ALI:. E para ser claro, o arquivo é um arquivo c C, por isso é 153 00:06:59,630 --> 00:07:00,930 escrito em código C. 154 00:07:00,930 --> 00:07:03,300 Por isso, vai a partir de código C para o código C. 155 00:07:03,300 --> 00:07:05,210 Você está apenas adicionando mais código com a libra. 156 00:07:05,210 --> 00:07:08,575 ROB: Quando você pré-processados, ele ainda é um arquivo C válido. 157 00:07:08,575 --> 00:07:09,940 SPEAKER 3: Okay. 158 00:07:09,940 --> 00:07:10,540 ALI: Boa pergunta. 159 00:07:10,540 --> 00:07:11,370 Eu gosto disso. 160 00:07:11,370 --> 00:07:12,755 Ok, próxima pergunta. 161 00:07:17,870 --> 00:07:19,660 >> Qual é o compilador? 162 00:07:19,660 --> 00:07:20,824 Alguém? 163 00:07:20,824 --> 00:07:21,286 Sim. 164 00:07:21,286 --> 00:07:24,650 SPEAKER 4: altera o código pré-processado em conjunto. 165 00:07:24,650 --> 00:07:25,110 ALI: Perfeito. 166 00:07:25,110 --> 00:07:25,390 ROB: sim. 167 00:07:25,390 --> 00:07:25,720 ALI: Cool. 168 00:07:25,720 --> 00:07:28,270 ROB: Então é isso que o compilador está fazendo especificamente 169 00:07:28,270 --> 00:07:30,740 quando estamos usando Clang. 170 00:07:30,740 --> 00:07:35,100 Em um sentido muito geral, um compilador é como tomar um código em linguagem 171 00:07:35,100 --> 00:07:37,070 e transformá-lo em outra língua. 172 00:07:37,070 --> 00:07:38,370 Assim, em C - 173 00:07:38,370 --> 00:07:43,750 ou, bem, Clang está tomando código que está em C e transformando-a em conjunto. 174 00:07:43,750 --> 00:07:46,560 E você não tem que ser capaz de entender a montagem de todo. 175 00:07:46,560 --> 00:07:49,830 Mas essa é a linguagem que está transformando-o em. 176 00:07:49,830 --> 00:07:50,230 >> ALI: Okay. 177 00:07:50,230 --> 00:07:52,920 E então, o que é uma montadora? 178 00:07:52,920 --> 00:07:54,270 Alguém? 179 00:07:54,270 --> 00:07:56,810 SPEAKER 5: [inaudível] para binário? 180 00:07:56,810 --> 00:07:57,260 ALI: Desculpe, mas o que? 181 00:07:57,260 --> 00:07:58,760 SPEAKER 5: [inaudível] para binário? 182 00:07:58,760 --> 00:07:59,260 ROB: Yep. 183 00:07:59,260 --> 00:07:59,880 ALI: Sim. 184 00:07:59,880 --> 00:08:01,960 ROB: Então a montadora - 185 00:08:01,960 --> 00:08:05,830 código de montagem é muito, muito perto do que o seu computador possa entender, 186 00:08:05,830 --> 00:08:09,390 mas lembre-se que ele não entende muito bem o texto 187 00:08:09,390 --> 00:08:10,630 que é o código de montagem. 188 00:08:10,630 --> 00:08:14,570 Você precisa convertê-lo em linha reta 1s e 0s. 189 00:08:14,570 --> 00:08:17,000 É como um processo de tradução direta. 190 00:08:17,000 --> 00:08:19,450 Nós poderíamos apenas dar-lhe uma tabela que mapeia o que cada 191 00:08:19,450 --> 00:08:21,880 instruções de montagem significa. 192 00:08:21,880 --> 00:08:24,340 Mas a montadora está apenas fazendo esta tradução para você. 193 00:08:24,340 --> 00:08:28,790 É transformar o código de montagem em 1s e 0s. 194 00:08:28,790 --> 00:08:30,870 >> ALI: E então, para o último, o que é um linker? 195 00:08:30,870 --> 00:08:35,070 E como é que lcs50-relacionam? 196 00:08:35,070 --> 00:08:37,010 Alguém? 197 00:08:37,010 --> 00:08:41,440 ROB: Este é o mais difícil e menos explicado no vídeo um compilador. 198 00:08:41,440 --> 00:08:48,980 ALI: Alguém se lembra de ver-lcs50 em um comando? 199 00:08:48,980 --> 00:08:50,690 SPEAKER 6: Quando você foi para o fazer. 200 00:08:50,690 --> 00:08:51,980 ALI: É no fazer. 201 00:08:51,980 --> 00:08:55,780 Sim, legal, tudo bem. 202 00:08:55,780 --> 00:09:02,024 Existe algum palpite ou vagas - Sim, vá. 203 00:09:02,024 --> 00:09:06,370 COLUNA 7: Eu não tenho certeza, porque a sua curta foi realmente [inaudível], mas era 204 00:09:06,370 --> 00:09:12,244 algo sobre fazer arquivos separados com cada biblioteca e, em seguida, colocar 205 00:09:12,244 --> 00:09:13,620 los todos juntos em uma biblioteca? 206 00:09:13,620 --> 00:09:14,400 ROB: sim. 207 00:09:14,400 --> 00:09:23,000 Então, quando você tem hello.c, que é um programa muito simples. 208 00:09:23,000 --> 00:09:25,570 Você está realmente fazendo apenas uma coisa nele. 209 00:09:25,570 --> 00:09:27,400 Mas quando você chegar em outros programas - 210 00:09:27,400 --> 00:09:31,700 e eu acho que mesmo quando você GetString em seus programas, você precisa para começar 211 00:09:31,700 --> 00:09:33,830 incluindo outros arquivos. 212 00:09:33,830 --> 00:09:38,000 Assim, a biblioteca CS50 é um tal arquivo em que temos as implementações 213 00:09:38,000 --> 00:09:40,750 de GetString e GetInt e todas essas coisas. 214 00:09:40,750 --> 00:09:45,540 Então, o que o ligador faz é que vai por aí procurando por todos esses 215 00:09:45,540 --> 00:09:49,400 arquivos, vendo onde as funções são definidas, certificando-se de que, quando eu chamo 216 00:09:49,400 --> 00:09:52,440 GetString em algum lugar, ele sabe que GetString significa que é o 217 00:09:52,440 --> 00:09:54,910 GetString mais na biblioteca CS50. 218 00:09:54,910 --> 00:09:58,895 Assim, o vinculador só tem todos esses arquivos, esmaga-los juntos, e agora 219 00:09:58,895 --> 00:10:01,020 você tem um arquivo executável. 220 00:10:01,020 --> 00:10:05,600 Portanto, tenha em mente, se você estiver usando a biblioteca CS50, você precisa tanto do 221 00:10:05,600 --> 00:10:10,370 # Include no topo, e depois também em seu comando make, como você 222 00:10:10,370 --> 00:10:12,630 disse, você tem que ter o-lcs50. 223 00:10:12,630 --> 00:10:15,720 Então você não pode apenas ter um. 224 00:10:15,720 --> 00:10:18,294 Então, isso é apenas algo a ter em mente para referência futura. 225 00:10:18,294 --> 00:10:22,550 >> SPEAKER 8: Então, vamos dizer que não havia outra biblioteca, como cs51.h, estaríamos 226 00:10:22,550 --> 00:10:26,780 também tem que adicionar-lcs51? 227 00:10:26,780 --> 00:10:32,390 ROB: A única razão que esta-lcs50 funciona perfeitamente é porque temos que o conjunto 228 00:10:32,390 --> 00:10:35,800 em um lugar específico em seus aparelhos para que ele saiba o que 229 00:10:35,800 --> 00:10:38,550 -Lcs50 meios. 230 00:10:38,550 --> 00:10:43,240 Nós poderíamos apenas dar-lhe um arquivo cs50.c, e então você pode compilá-lo, dizendo 231 00:10:43,240 --> 00:10:49,050 Clang hello.c cs50.c, e depois faria seu executável, colocando 232 00:10:49,050 --> 00:10:50,350 esses dois arquivos juntos. 233 00:10:50,350 --> 00:10:56,520 Ele sabe que, lcs50 significa cs50.c mais em algum diretório que especificado em 234 00:10:56,520 --> 00:10:58,350 seus aparelhos. 235 00:10:58,350 --> 00:11:04,290 Então, se você queria um cs51.c ser especificável por apenas dizendo-lcs51, 236 00:11:04,290 --> 00:11:06,760 então nós também precisamos colocá-lo no diretório para que ele saiba onde 237 00:11:06,760 --> 00:11:08,636 olhar para ele. 238 00:11:08,636 --> 00:11:10,510 ALI: Qual foi a sua pergunta? 239 00:11:10,510 --> 00:11:13,975 >> COLUNA 7: Por que você tem que ligar o CS50 240 00:11:13,975 --> 00:11:18,940 se - não era ele copiar / colar na primeira etapa, quando você pré-processados ​​é? 241 00:11:18,940 --> 00:11:19,700 ALI: Você quer tomar? 242 00:11:19,700 --> 00:11:20,880 ROB: Claro. 243 00:11:20,880 --> 00:11:28,028 Portanto, o arquivo cs50.h é separado do arquivo C cs50.c. 244 00:11:28,028 --> 00:11:33,652 Você começou a funcionar protótipos na classe? 245 00:11:33,652 --> 00:11:34,350 Okay. 246 00:11:34,350 --> 00:11:40,255 Então, basicamente, o arquivo cs50.h está indo só para copiar e colar - 247 00:11:40,255 --> 00:11:44,040 ALI: Vocês sabem o que são assinaturas? 248 00:11:44,040 --> 00:11:46,580 Ok, então muito bem, se você olhar - 249 00:11:46,580 --> 00:11:50,530 ROB: Vamos fingir cs50.h não está lá. 250 00:11:50,530 --> 00:11:52,960 Agora este arquivo - 251 00:11:52,960 --> 00:11:56,090 você está fazendo GetString string s =. 252 00:11:56,090 --> 00:11:59,350 Mas quando chegamos a este ponto no código, não tem idéia do que 253 00:11:59,350 --> 00:12:00,230 GetString é. 254 00:12:00,230 --> 00:12:02,600 Ele sabe que é uma função, uma vez que você está chamando. 255 00:12:02,600 --> 00:12:06,500 Mas ele não sabe que ele é, na verdade, deve retornar uma string. 256 00:12:06,500 --> 00:12:14,530 Então, como eu disse, string s = GetInt, isso não faz qualquer sentido, uma vez 257 00:12:14,530 --> 00:12:17,530 você está assinando um inteiro para uma string. 258 00:12:17,530 --> 00:12:22,270 Mas ele não sabe que GetString faz sentido, porque não 259 00:12:22,270 --> 00:12:24,380 sei que GetString retorna um string. 260 00:12:24,380 --> 00:12:28,220 Então, o que cs50.h diz é algo como isto. 261 00:12:33,070 --> 00:12:37,750 ALI: Então, o que Rob está digitando é, é uma promessa de uma forma que ele vai 262 00:12:37,750 --> 00:12:41,280 tem essa função chamada GetString. 263 00:12:41,280 --> 00:12:45,250 ROB: Isto é tudo cs50.h que está copiando e colando aqui, bem 264 00:12:45,250 --> 00:12:47,620 como GetInt e todas essas coisas. 265 00:12:47,620 --> 00:12:51,520 E isso só diz que GetString se retornar uma string. 266 00:12:51,520 --> 00:12:54,830 Você não sabe como é implementada, mas quando chegarmos a esta linha, agora 267 00:12:54,830 --> 00:12:57,760 ele sabe que corretamente retorna um string. 268 00:12:57,760 --> 00:13:03,022 >> SPEAKER 9: Então, se não se incomodou com a coisa # include e, em vez 269 00:13:03,022 --> 00:13:07,130 escreveu apenas o protótipo para os que estamos realmente vai usar? 270 00:13:07,130 --> 00:13:07,330 ROB: Yeah. 271 00:13:07,330 --> 00:13:08,870 Então, vamos executar este. 272 00:13:08,870 --> 00:13:09,110 SPEAKER 9: É? 273 00:13:09,110 --> 00:13:13,670 Então, por padrão, ele faria o-l para CS50 apenas porque -. 274 00:13:13,670 --> 00:13:14,740 ROB: - expressão. 275 00:13:14,740 --> 00:13:19,370 ALI: Sim, porque, como você disse, é no arquivo make. 276 00:13:19,370 --> 00:13:24,040 ROB: cs50.h também acontece a ser char * typedef para cadeia. 277 00:13:24,040 --> 00:13:26,950 Você pode ignorar completamente o que isso significa para agora. 278 00:13:26,950 --> 00:13:31,430 Mas isso também é algo incluído no cs50.h. 279 00:13:31,430 --> 00:13:34,230 Então, agora as coisas funcionavam perfeitamente bem. 280 00:13:34,230 --> 00:13:40,770 Ele funciona exatamente igual ao que era quando só tinha 281 00:13:40,770 --> 00:13:45,120 o # include. 282 00:13:45,120 --> 00:13:49,200 E assim incluindo cs50.h acontece com o excesso de incluir coisas que você precisa - 283 00:13:49,200 --> 00:13:53,080 como, você não usar o GetInt neste programa, mas isso não importa. 284 00:13:53,080 --> 00:13:55,010 Ele vai simplesmente ignorá-lo. 285 00:13:55,010 --> 00:14:02,400 ALI: E então, quando você faz o-lcs50 aqui e aqui, o que está acontecendo 286 00:14:02,400 --> 00:14:05,290 em é que é ter o código real implementável. 287 00:14:05,290 --> 00:14:07,530 Então é aí que ele realmente é, fazendo o - 288 00:14:07,530 --> 00:14:09,090 escrever o código para GetString. 289 00:14:09,090 --> 00:14:11,180 Portanto, não é apenas uma promessa mais. 290 00:14:11,180 --> 00:14:16,520 É realmente passando e levando a corda e todas essas coisas. 291 00:14:16,520 --> 00:14:17,600 Faz sentido? 292 00:14:17,600 --> 00:14:22,640 Perguntas? Tudo bem. 293 00:14:22,640 --> 00:14:24,466 Feijão frescos. 294 00:14:24,466 --> 00:14:27,630 >> ROB: Agora podemos passar para código real. 295 00:14:27,630 --> 00:14:28,780 ALI: Okay. 296 00:14:28,780 --> 00:14:33,340 Então, aqui está o primeiro problema. 297 00:14:33,340 --> 00:14:36,910 Então, ele diz que escrever um programa que solicita ao usuário uma minúscula 298 00:14:36,910 --> 00:14:40,540 letra e depois converte para maiúsculas sem usar bit a bit 299 00:14:40,540 --> 00:14:43,590 as operações, de acordo com a saída de amostra abaixo. 300 00:14:43,590 --> 00:14:48,780 Assim você pode ver, você executa o programa com o. A.out /, e então você está 301 00:14:48,780 --> 00:14:53,320 vai colocar em letras minúsculas a, e em seguida, o programa deve dar de capital 302 00:14:53,320 --> 00:15:00,590 A. Então, por que não vocês todos dar-lhe um tiro no CS50 espaços? 303 00:15:00,590 --> 00:15:03,360 Então, vocês podem ir aqui. 304 00:15:03,360 --> 00:15:06,650 E você pode apagar todo o código aqui. 305 00:15:06,650 --> 00:15:12,140 E então você pode ir em frente e começar a programar a coisa. 306 00:15:12,140 --> 00:15:14,590 ROB: Você provavelmente vai querer usar GetChar, que é 307 00:15:14,590 --> 00:15:16,190 incluídos na biblioteca de CS50. 308 00:15:16,190 --> 00:15:18,770 ALI: Eu acho que poderia ser melhor se você salvar a parte de cima. 309 00:15:21,452 --> 00:15:23,805 Então você pode querer apenas mudar as coisas no meio. 310 00:15:28,710 --> 00:15:29,070 Vá em frente e trabalhar. 311 00:15:29,070 --> 00:15:30,530 Sinta-se livre para trabalhar com o outro. 312 00:15:30,530 --> 00:15:32,360 Rob: E você pode fazer perguntas se você tem - 313 00:15:32,360 --> 00:15:33,450 >> COLUNA 10: O que é uma operação bit a bit? 314 00:15:33,450 --> 00:15:35,100 ROB: Então, ignorar que para este problema. 315 00:15:35,100 --> 00:15:36,330 ALI: Se você não sabe, isso é bom. 316 00:15:36,330 --> 00:15:38,300 ROB: Nós estamos indo para usá-lo no próximo problema. 317 00:15:38,300 --> 00:15:40,750 Mas se você não sabe o que é um operador bit a bit é, isso é bom. 318 00:15:40,750 --> 00:15:43,575 COLUNA 10: É que, como ligá-lo ao código ASCII? 319 00:15:43,575 --> 00:15:44,050 ALI: Não. 320 00:15:44,050 --> 00:15:44,750 ROB: Não. 321 00:15:44,750 --> 00:15:46,220 Você pode fazer isso para este problema. 322 00:15:46,220 --> 00:15:48,280 COLUNA 10: Como você faz isso? 323 00:15:48,280 --> 00:15:52,460 Então, se eu tivesse um lugar para escrever - 324 00:15:52,460 --> 00:15:54,670 ALI: Ou algo para escrever. 325 00:15:54,670 --> 00:15:56,780 ROB: Eu poderia apenas uma espécie de tipo para isso. 326 00:15:56,780 --> 00:15:59,045 ALI: Tipo no topo. 327 00:15:59,045 --> 00:16:01,390 ROB: Oh, eu estou sentado em um microfone. 328 00:16:01,390 --> 00:16:10,860 >> Assim, vimos na palestra que o valor ASCII para maiúsculo é 65. 329 00:16:10,860 --> 00:16:13,670 E capital B será 66, e assim por diante. 330 00:16:13,670 --> 00:16:20,860 Assim, você pode literalmente usar 'A' para significar o número 65. 331 00:16:20,860 --> 00:16:24,600 Como, este é o valor de 65. 332 00:16:24,600 --> 00:16:30,950 Eu posso fazer algo como int x = 100 - 'A'. E agora x terá o valor 333 00:16:30,950 --> 00:16:33,810 100-65. 334 00:16:33,810 --> 00:16:36,708 ALI: Você pode executar isso e mostrar isso. 335 00:16:36,708 --> 00:16:38,420 Oh, talvez não. 336 00:16:38,420 --> 00:16:38,600 Não importa. 337 00:16:38,600 --> 00:16:40,970 ROB: Eu tive que imprimir. 338 00:16:40,970 --> 00:16:43,730 COLUNA 10: Como é que você ligá-lo de volta ao personagem? 339 00:16:43,730 --> 00:16:46,800 ALI: Então, se você não - 340 00:16:46,800 --> 00:16:51,450 você apenas forçá-lo a ser um char, iguais. 341 00:16:51,450 --> 00:16:53,630 ROB: Então há um - 342 00:16:53,630 --> 00:16:58,440 a distinção entre um char e um inteiro é apenas em termos de tamanho. 343 00:16:58,440 --> 00:17:01,230 Então um inteiro passa a ser capaz de representar as coisas 344 00:17:01,230 --> 00:17:02,600 , tipo, quatro bilhões. 345 00:17:02,600 --> 00:17:05,839 Um char só é capaz de representar as coisas até 255. 346 00:17:05,839 --> 00:17:08,390 Mas, não há diferença entre eles não seja este. 347 00:17:08,390 --> 00:17:12,339 Então você pode dizer char c = 65. 348 00:17:12,339 --> 00:17:24,204 Isso é equivalente a dizer char c é igual a "A". 349 00:17:24,204 --> 00:17:25,210 ALI: Oh, não. 350 00:17:25,210 --> 00:17:26,710 Na verdade, não guardar coisas. 351 00:17:26,710 --> 00:17:28,130 ROB: Não, você não pode fazer isso. 352 00:17:28,130 --> 00:17:31,610 ALI: Isso é apenas - 353 00:17:31,610 --> 00:17:34,920 [Gemidos] 354 00:17:34,920 --> 00:17:40,700 >> ROB: Ok, então o que Ali escrevi foi um programa que primeiro imprime 100 - 355 00:17:40,700 --> 00:17:46,290 'A' como um número inteiro, que era de 35, como nós esperamos, porque 100 menos a ASCII 356 00:17:46,290 --> 00:17:48,580 valor de A é 65. 357 00:17:48,580 --> 00:17:54,100 Então ela impressos com% c, o que significa interpretá-lo como um char. 358 00:17:54,100 --> 00:17:57,050 Então, 100 - é de 35. 359 00:17:57,050 --> 00:18:00,990 Interpretar isso como um personagem passa a ser o símbolo de hash. 360 00:18:00,990 --> 00:18:06,160 Se você olhar para asciitable.com ou o que seja, você vai ver que 35 é o 361 00:18:06,160 --> 00:18:07,410 símbolo de hash. 362 00:18:09,940 --> 00:18:12,700 ALI: Ok, quaisquer outros esclarecimentos sobre o problema? 363 00:18:16,000 --> 00:18:18,180 Ok, vocês podem ir em frente e fazê-lo em seguida. 364 00:18:18,180 --> 00:18:20,330 Sinta-se livre para fazer perguntas ou falar uns com os outros. 365 00:18:20,330 --> 00:18:24,390 Ou se você já está pronto, você pode relaxar. 366 00:18:24,390 --> 00:18:29,640 >> LUCAS: Eles são da mesma classe, todas as letras minúsculas em ordem e 367 00:18:29,640 --> 00:18:32,923 também a maiúscula também estão em ordem, porque isso é algo útil para 368 00:18:32,923 --> 00:18:33,990 o problema. 369 00:18:33,990 --> 00:18:35,620 ALI: Bom ponto, Lucas. 370 00:18:35,620 --> 00:18:37,430 Então, se vocês todos isso? 371 00:18:37,430 --> 00:18:37,640 COLUNA 11: Sim. 372 00:18:37,640 --> 00:18:39,535 Isso é como fazê-lo, certo? 373 00:18:39,535 --> 00:18:39,960 ALI: Certo. 374 00:18:39,960 --> 00:18:40,415 ROB: Yeah. 375 00:18:40,415 --> 00:18:47,270 COLUNA 11: [inaudível] 376 00:18:47,270 --> 00:18:48,330 ALI: Tudo bem. 377 00:18:48,330 --> 00:18:49,350 ROB: O que é a questão pedindo? 378 00:18:49,350 --> 00:18:50,590 Apenas para converter - 379 00:18:50,590 --> 00:18:52,560 ALI: Converter a minúscula ao maiúsculas. 380 00:18:52,560 --> 00:18:53,100 É isso aí. 381 00:18:53,100 --> 00:18:54,700 ROB: Okay. 382 00:18:54,700 --> 00:18:56,180 ALI: Será que devemos escrever? 383 00:18:56,180 --> 00:18:59,340 Eu acho que nós vamos apenas olhar para outra pessoa. 384 00:18:59,340 --> 00:19:07,140 ROB: Então para aqueles que possam ser preso, um caminho - 385 00:19:07,140 --> 00:19:15,160 Se eu tiver algum char c, e vamos dizer que ele passa a ser a letra D. 386 00:19:15,160 --> 00:19:20,760 Então, agora como posso descobrir o que letra do alfabeto é C? 387 00:19:20,760 --> 00:19:25,620 Não D, mas eu quero dizer, D passa a ser a quarta letra do alfabeto. 388 00:19:25,620 --> 00:19:28,910 E se começar a contar a partir de 0, então é a terceira letra do alfabeto. 389 00:19:28,910 --> 00:19:36,240 Assim, se A é 0, B é 1, C é 2, é 3 D, como posso descobrir posição int - 390 00:19:36,240 --> 00:19:40,780 em que posição do alfabeto C é em? 391 00:19:40,780 --> 00:19:42,333 Alguém tem alguma idéia? 392 00:19:42,333 --> 00:19:45,440 ALI: Eu acho que eles estão todos de codificação. 393 00:19:45,440 --> 00:19:46,440 ROB: E sobre o primeiro? 394 00:19:46,440 --> 00:19:48,608 COLUNA 12: Então o que A é, subtrair o primeiro? 395 00:19:48,608 --> 00:19:49,030 ROB: Yeah. 396 00:19:49,030 --> 00:19:49,950 ALI: Sim, incrível. 397 00:19:49,950 --> 00:19:51,765 Então, você poderia fazer o capital D - 398 00:19:51,765 --> 00:19:52,840 oh, sinto muito. 399 00:19:52,840 --> 00:19:55,620 Você leva o personagem e você subtrair o primeiro, como você disse. 400 00:19:55,620 --> 00:20:03,940 ROB: Então, se D é algo como 68, e subtraímos A, que é de 65, então temos 401 00:20:03,940 --> 00:20:07,130 3, nos dizendo que D é a terceira letra do alfabeto 402 00:20:07,130 --> 00:20:09,290 a partir de 0. 403 00:20:09,290 --> 00:20:11,310 Então você pode usar isso. 404 00:20:11,310 --> 00:20:13,830 Agora sabemos o que letra do alfabeto, em termos de 405 00:20:13,830 --> 00:20:16,060 letras maiúsculas, ou - 406 00:20:16,060 --> 00:20:18,330 nós poderíamos fazer a mesma coisa para letras minúsculas para descobrir o que 407 00:20:18,330 --> 00:20:20,170 minúsculas posição em que estamos dentro 408 00:20:20,170 --> 00:20:25,690 E nós podemos usar isso para depois convertê-lo em maiúsculas usando um 409 00:20:25,690 --> 00:20:26,970 ideia muito semelhantes. 410 00:20:31,470 --> 00:20:32,670 Pedir sugestões? 411 00:20:32,670 --> 00:20:35,810 >> ALI: Vocês - espere, eu não sei o quanto vocês são. 412 00:20:35,810 --> 00:20:40,060 São mais de você fez, você ainda está trabalhando, você está preso? 413 00:20:40,060 --> 00:20:42,020 Vocês podem gritar - 414 00:20:42,020 --> 00:20:42,330 preso. 415 00:20:42,330 --> 00:20:43,210 Uma pessoa está presa. 416 00:20:43,210 --> 00:20:43,560 Cool. 417 00:20:43,560 --> 00:20:44,700 Eu tendem a ser preso também. 418 00:20:44,700 --> 00:20:45,415 COLUNA 13: eu sou feito. 419 00:20:45,415 --> 00:20:46,410 ALI: Você está feito? 420 00:20:46,410 --> 00:20:47,480 Okay. 421 00:20:47,480 --> 00:20:47,935 Concluído. 422 00:20:47,935 --> 00:20:49,300 COLUNA 13: [inaudível] 423 00:20:49,300 --> 00:20:50,600 ALI: Sim, legal. 424 00:20:50,600 --> 00:20:53,720 Você está verificando que é em forma de minúsculas? 425 00:20:53,720 --> 00:20:56,730 Ok, legal. 426 00:20:56,730 --> 00:20:59,882 Onde estão os outros? 427 00:20:59,882 --> 00:21:06,140 Essa dica ajudá-lo, como para não-furando a si mesmo? 428 00:21:06,140 --> 00:21:09,778 COLUNA 14: Não realmente, mas apenas porque, eu não sei, eu não sou 429 00:21:09,778 --> 00:21:11,590 digerir ainda. 430 00:21:11,590 --> 00:21:12,640 ALI: Ok, legal. 431 00:21:12,640 --> 00:21:13,431 Você quer tentar - 432 00:21:13,431 --> 00:21:16,140 ou você quer ir e falar? 433 00:21:16,140 --> 00:21:18,590 >> ROB: O que eu ia dizer é - 434 00:21:18,590 --> 00:21:19,890 utilizando este modo. 435 00:21:19,890 --> 00:21:22,650 Você entende como temos que posição do alfabeto 436 00:21:22,650 --> 00:21:24,820 a letra é em? 437 00:21:24,820 --> 00:21:30,616 COLUNA 14: Ok, então quando você colocar as coisas em aspas simples, 438 00:21:30,616 --> 00:21:35,030 que retorna um número? 439 00:21:35,030 --> 00:21:37,100 ROB: sim. 440 00:21:37,100 --> 00:21:40,840 Será traduzido para o valor ASCII que representa. 441 00:21:40,840 --> 00:21:43,350 Então você quer ir a tabela ASCII, ou seja o que for? 442 00:21:46,456 --> 00:21:47,840 ALI: Apenas um destes? 443 00:21:47,840 --> 00:21:49,970 ROB: Yep. 444 00:21:49,970 --> 00:21:55,270 Então, quando você colocar qualquer desses símbolos, ignorando um monte de - 445 00:21:55,270 --> 00:21:56,450 ALI: [inaudível] 446 00:21:56,450 --> 00:21:57,620 ROB: Oh, utilizando o cursor. 447 00:21:57,620 --> 00:21:58,380 ALI: Yeah. 448 00:21:58,380 --> 00:21:59,690 Isso foi emocionante. 449 00:21:59,690 --> 00:22:04,050 ROB: Então, ignorando estes do lado esquerdo, que são símbolos especiais - 450 00:22:04,050 --> 00:22:08,520 se você colocar qualquer um destes símbolos em aspas simples, então será 451 00:22:08,520 --> 00:22:11,620 traduzidas para este valor do lado esquerdo. 452 00:22:11,620 --> 00:22:13,660 ALI: Este é o número decimal para ele. 453 00:22:13,660 --> 00:22:19,710 É como um jogos com 65, B a 66, e você vai notar que eles estão todos em 454 00:22:19,710 --> 00:22:21,540 ordem alfabética, o que faz a diferença. 455 00:22:21,540 --> 00:22:27,110 Então, como Rob diz, antes, em que o código, fomos calcular a distância de 456 00:22:27,110 --> 00:22:29,610 a primeira letra, per se. 457 00:22:29,610 --> 00:22:32,820 E isso vai ser o mesmo, se é maiúscula ou minúscula. 458 00:22:32,820 --> 00:22:38,390 ROB: Então, quando nós fizemos D, 68 menos de 65, nós temos três. 459 00:22:38,390 --> 00:22:42,370 Como D é de três posições para o alfabeto. 460 00:22:42,370 --> 00:22:46,680 ALI: Então, como é que você traduzir isso mais para encontrar o pouco d? 461 00:22:46,680 --> 00:22:47,240 ROB: Yeah. 462 00:22:47,240 --> 00:22:52,230 Então, se eu tenho 3 agora, eu sei que eu quero ir três letras no - 463 00:22:52,230 --> 00:22:54,830 acontecer de estar indo minúsculas agora, mas vamos dizer que eu quero ir para três 464 00:22:54,830 --> 00:22:58,610 posições para o lado das coisas minúsculas. 465 00:22:58,610 --> 00:23:01,400 Então, como posso fazer isso? 466 00:23:01,400 --> 00:23:04,240 Eu sei que é um minúsculo 97. 467 00:23:04,240 --> 00:23:07,535 Então, como posso encontrar três posições para as letras minúsculas? 468 00:23:10,461 --> 00:23:11,934 >> COLUNA 15: Eu tenho uma pergunta, na verdade. 469 00:23:11,934 --> 00:23:12,425 ALI: Sim, vá em frente. 470 00:23:12,425 --> 00:23:14,880 COLUNA 15: Então, para isso, ele realmente não se importa se eu sei que esta posição, 471 00:23:14,880 --> 00:23:16,360 gosta, eu não preciso desta tabela. 472 00:23:16,360 --> 00:23:16,840 ROB: Nope. 473 00:23:16,840 --> 00:23:19,380 Você nunca vai precisar usar qualquer um desses números. 474 00:23:19,380 --> 00:23:23,670 E este é um ponto importante em seus programas que você nunca deve difícil 475 00:23:23,670 --> 00:23:25,500 codificar qualquer destas constantes. 476 00:23:25,500 --> 00:23:31,190 Use 'A'. nunca use 65 ou 97. 477 00:23:31,190 --> 00:23:34,370 ALI: Aqueles são chamados números mágicos, e eles são muito confusas. 478 00:23:34,370 --> 00:23:37,080 Tipo, quando você estiver depurando um código, você pode não se lembrar do que 479 00:23:37,080 --> 00:23:38,020 você usou para eles. 480 00:23:38,020 --> 00:23:40,770 E para nós o seu código de classificação, não sabe realmente o que 481 00:23:40,770 --> 00:23:41,750 que você está usando para eles. 482 00:23:41,750 --> 00:23:44,815 Então, é melhor se você realmente usar os personagens assim que faz 483 00:23:44,815 --> 00:23:46,065 mais sentido para as pessoas. 484 00:23:49,460 --> 00:23:51,160 Ok, todas as outras perguntas? 485 00:23:51,160 --> 00:23:52,975 As pessoas estão mais feito, ou - 486 00:23:56,243 --> 00:23:57,493 Eu acho que nós podemos verificar. 487 00:23:59,870 --> 00:24:02,410 É realmente assustador que você pode ver o código das pessoas. 488 00:24:02,410 --> 00:24:04,970 ROB: Yeah. 489 00:24:04,970 --> 00:24:06,410 Nós não temos que fazer isso aqui. 490 00:24:06,410 --> 00:24:08,380 Nós não sabemos os nomes das pessoas, também. 491 00:24:08,380 --> 00:24:10,940 ALI: Ah, sim, bem que o torna melhor, então vamos ser ainda mais imparcial 492 00:24:10,940 --> 00:24:14,820 em vez de apenas escolher aleatoriamente alguém. 493 00:24:14,820 --> 00:24:15,360 Não se preocupe. 494 00:24:15,360 --> 00:24:16,265 Eu não vou fazer isso. 495 00:24:16,265 --> 00:24:20,396 Se você tem coisas aleatórias sobre - nunca mente. 496 00:24:20,396 --> 00:24:20,870 Okay. 497 00:24:20,870 --> 00:24:22,556 Como as pessoas estão fazendo? 498 00:24:22,556 --> 00:24:26,950 >> COLUNA 17: Então, a nona linha deve imprimir um personagem? 499 00:24:26,950 --> 00:24:27,430 ROB: sim. 500 00:24:27,430 --> 00:24:27,910 ALI: Yeah. 501 00:24:27,910 --> 00:24:30,770 Então, se você vai para baixo - 502 00:24:30,770 --> 00:24:32,200 ROB: Oh, não pode fazer isso. 503 00:24:32,200 --> 00:24:35,400 ALI: Você vai ver que é impresso o símbolo hash. 504 00:24:35,400 --> 00:24:37,180 COLUNA 17: Ah, ok. 505 00:24:37,180 --> 00:24:41,290 ROB: Eu acho que outra maneira você pode olhar para as coisas é que estamos imprimindo dois 506 00:24:41,290 --> 00:24:42,540 caracteres. 507 00:24:44,500 --> 00:24:47,740 Primeiro que está imprimindo é a letra A. 508 00:24:47,740 --> 00:24:51,610 O próximo que estamos imprimindo é apenas 65. 509 00:24:51,610 --> 00:24:54,450 Ele provavelmente vai gritar comigo por estes. 510 00:24:54,450 --> 00:25:00,060 Então, se nós simplesmente executar isso, você vai perceber que ele imprime uma vezes ambos. 511 00:25:00,060 --> 00:25:02,070 Porque nós estamos pedindo é a mesma coisa. 512 00:25:02,070 --> 00:25:07,840 Estamos pedindo para imprimir a letra A. E então nós estamos pedindo para imprimir a 513 00:25:07,840 --> 00:25:13,820 número 65 interpretado como um personagem, que é a mesma coisa. 514 00:25:13,820 --> 00:25:15,100 ALI: Você tem algo a dizer? 515 00:25:15,100 --> 00:25:18,150 Ah, só brincando, desculpe. 516 00:25:18,150 --> 00:25:20,640 Tudo bem, que são pessoas - 517 00:25:20,640 --> 00:25:22,280 ROB: Nós podemos apenas atravessá-la. 518 00:25:22,280 --> 00:25:25,250 >> ALI: Ok, então como você começa? 519 00:25:25,250 --> 00:25:26,500 Alguém? 520 00:25:28,030 --> 00:25:34,486 Como sugestão, temos que conseguir alguma coisa do povo, a partir das typers. 521 00:25:34,486 --> 00:25:36,850 COLUNA 18: [inaudível] 522 00:25:36,850 --> 00:25:38,290 ALI: Ah, sim, um aviso, perfeito. 523 00:25:38,290 --> 00:25:40,660 Então, nós vamos escrever - 524 00:25:40,660 --> 00:25:41,670 o que vamos escrever? 525 00:25:41,670 --> 00:25:43,660 Alguém? 526 00:25:43,660 --> 00:25:46,480 Ou devo apenas digitá-lo? 527 00:25:46,480 --> 00:25:47,530 Estamos realmente digitando o - 528 00:25:47,530 --> 00:25:48,430 ROB: Claro. 529 00:25:48,430 --> 00:25:50,990 ALI: Então, nós vamos escrever um printf para solicitar que, por isso, pode ser 530 00:25:50,990 --> 00:25:54,810 gosto, dá-me um personagem. 531 00:25:54,810 --> 00:25:55,710 Ok, e depois? 532 00:25:55,710 --> 00:25:56,664 Por que ele está fazendo isso? 533 00:25:56,664 --> 00:25:57,620 ROB: Eu não sei. 534 00:25:57,620 --> 00:26:00,070 ALI: Okay. 535 00:26:00,070 --> 00:26:03,680 Então, agora, nós estamos dizendo a eles para nos dar um caráter. 536 00:26:03,680 --> 00:26:07,064 Mas, então, como é que você começa realmente o personagem? 537 00:26:07,064 --> 00:26:10,060 COLUNA 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 Ok, então qual é a diferença entre uma corda e um char? 541 00:26:17,038 --> 00:26:20,020 COLUNA 19: Strings são uma série, como uma matriz de caracteres. 542 00:26:20,020 --> 00:26:21,910 >> ALI: Cool, sim. 543 00:26:21,910 --> 00:26:25,550 Portanto, neste problema, só precisamos considerar um personagem de cada vez, de modo 544 00:26:25,550 --> 00:26:28,400 estamos indo só para fazer GetChar para essa instância. 545 00:26:28,400 --> 00:26:32,400 ROB: Nós poderíamos implementar uma função, se quiséssemos que levou uma cadeia inteira 546 00:26:32,400 --> 00:26:35,750 e foi até a cadeia e mudou todas as letras minúsculas para maiúsculas e tudo 547 00:26:35,750 --> 00:26:37,380 maiúsculas de minúsculas. 548 00:26:37,380 --> 00:26:39,170 Mas aqui, estamos apenas a pedir-lhe um caráter. 549 00:26:39,170 --> 00:26:42,800 ALI: Então, agora temos o caráter aqui, mas então temos de salvá-lo. 550 00:26:42,800 --> 00:26:45,070 Então vamos acrescentar char c - o quê? 551 00:26:45,070 --> 00:26:46,070 COLUNA 20: Defina a variável. 552 00:26:46,070 --> 00:26:48,100 ALI: Sim, exatamente. 553 00:26:48,100 --> 00:26:49,585 Portanto, temos o nosso caráter. 554 00:26:49,585 --> 00:26:51,766 ROB: Eu acho que você pode ser - 555 00:26:51,766 --> 00:26:55,630 você está apenas três espaços, é por isso que está gritando para você. 556 00:26:55,630 --> 00:27:01,300 >> ALI: Ok, legal, agora que temos a tabulação conjunto, o que acontece a seguir? 557 00:27:01,300 --> 00:27:02,550 Qual é o próximo passo? 558 00:27:05,590 --> 00:27:08,870 ROB: O que o nosso programa deve fazer é mudar uma letra minúscula a um 559 00:27:08,870 --> 00:27:10,130 letra maiúscula. 560 00:27:10,130 --> 00:27:15,478 E se acontecer de eu inserir o símbolo hash? 561 00:27:15,478 --> 00:27:16,314 É que - 562 00:27:16,314 --> 00:27:16,732 ALI: É um bom símbolo. 563 00:27:16,732 --> 00:27:18,270 Nós usamos muito. 564 00:27:18,270 --> 00:27:21,937 ROB: Isso é uma coisa válida que pode converter para uma forma maiúscula? 565 00:27:21,937 --> 00:27:23,070 COLUNA 21: Não. 566 00:27:23,070 --> 00:27:24,070 ALI: Não. 567 00:27:24,070 --> 00:27:24,900 Devemos verificar isso. 568 00:27:24,900 --> 00:27:34,950 Assim podemos ter uma declaração se verificar isso, se o c é maior do que 569 00:27:34,950 --> 00:27:37,410 ou igual a a'a minúscula '- 570 00:27:37,410 --> 00:27:45,490 por isso, se olharmos para o gráfico, você vai perceber que ele tem que ser entre aqui, 571 00:27:45,490 --> 00:27:47,670 em 97, ea minúscula. 572 00:27:47,670 --> 00:27:52,110 E pode ser qualquer um destes, e em incrementos de toda a maneira para baixo. 573 00:27:52,110 --> 00:27:55,200 E depois há a z 122. 574 00:27:55,200 --> 00:27:58,215 E tem que cair entre estes dois valores. 575 00:27:58,215 --> 00:27:59,700 Isso faz sentido? 576 00:27:59,700 --> 00:28:04,130 ROB: Então, se c não é entre 97 e 122 - 577 00:28:04,130 --> 00:28:09,960 ou você nunca precisará usar esses números - se c não é entre 'a' e 578 00:28:09,960 --> 00:28:15,110 'Z', então não era um personagem válido para nós em letras maiúsculas. 579 00:28:15,110 --> 00:28:18,590 ALI: Então, em forma de código, dizemos que se c é maior ou igual a única 580 00:28:18,590 --> 00:28:19,640 minúsculas caso - 581 00:28:19,640 --> 00:28:21,270 uau, como você diz isso? 582 00:28:21,270 --> 00:28:26,900 Ok, é maior do que ou igual à minúscula "a", e que tem de estar acima de 583 00:28:26,900 --> 00:28:32,250 'z'. o minúsculas Por isso, tem de ser inferior ou igual a minúsculas 'z'. 584 00:28:32,250 --> 00:28:35,300 Nós estamos fazendo a certeza que é entre os dois. 585 00:28:35,300 --> 00:28:38,540 Então, podemos continuar com o nosso código feliz. 586 00:28:41,992 --> 00:28:43,360 O quê? 587 00:28:43,360 --> 00:28:46,860 ROB: Então eu percebi que seria apenas continuar perguntando, se acontecer de não ter um 588 00:28:46,860 --> 00:28:48,250 letra minúscula. 589 00:28:48,250 --> 00:28:51,130 ALI: Oh, eu não estava ciente disso. 590 00:28:51,130 --> 00:28:52,820 Desculpe. 591 00:28:52,820 --> 00:28:58,100 >> Ok, então se nós vamos fazer como Rob diz, e certifique-se de que - 592 00:28:58,100 --> 00:29:02,068 podemos continuar pedindo-lhes, então, o que devemos fazer? 593 00:29:02,068 --> 00:29:02,994 COLUNA 22: [inaudível] 594 00:29:02,994 --> 00:29:03,530 ROB: Yeah. 595 00:29:03,530 --> 00:29:05,630 Devemos usar algum tipo de laço. 596 00:29:05,630 --> 00:29:12,900 Como o usuário pode digitar algo inválido uma quantidade incontável de vezes. 597 00:29:12,900 --> 00:29:14,990 Então você pode usar um loop while. 598 00:29:14,990 --> 00:29:18,870 O objetivo de um laço do-tempo - 599 00:29:18,870 --> 00:29:21,340 literalmente, a única vez em suas vidas inteiras que você nunca vai usar do- 600 00:29:21,340 --> 00:29:24,780 while é quando você está pedindo a entrada do usuário. 601 00:29:24,780 --> 00:29:28,260 Então o fato de que estamos pedindo a entrada do usuário aqui é uma dica de que devemos 602 00:29:28,260 --> 00:29:29,660 usar um loop do-while. 603 00:29:29,660 --> 00:29:30,780 E por que isso? 604 00:29:30,780 --> 00:29:34,270 Porque do-while sempre acontece pelo menos uma vez. 605 00:29:34,270 --> 00:29:40,260 Então, quando você está pedindo a entrada do usuário, você quer que isso aconteça pelo menos uma vez. 606 00:29:40,260 --> 00:29:42,750 E então, se as coisas eram bem sucedido, você pode continuar. 607 00:29:42,750 --> 00:29:45,130 Se não, vá para trás e perguntar novamente. 608 00:29:45,130 --> 00:29:48,950 >> ALI: Então, em outras palavras, nós temos que fazer seção. 609 00:29:48,950 --> 00:29:51,130 E assim, este é dizendo a ele para fazer algo. 610 00:29:51,130 --> 00:29:53,890 Então printf - 611 00:29:53,890 --> 00:29:57,490 imprimir o extrato, o prompt, e também obter o personagem, ou a tentativa de 612 00:29:57,490 --> 00:29:58,780 obter um personagem. 613 00:29:58,780 --> 00:30:03,410 E depois temos que verificar se ele realmente fez isso corretamente. 614 00:30:03,410 --> 00:30:07,730 Então nós adicionamos as condições, então dizemos tempo, e depois temos a 615 00:30:07,730 --> 00:30:08,980 instrução condicional. 616 00:30:11,600 --> 00:30:14,730 ROB: Mas agora inverteu a linha de pensamento. 617 00:30:14,730 --> 00:30:18,940 Agora que originalmente estavam dizendo se c é neste intervalo, ele é válido. 618 00:30:18,940 --> 00:30:23,340 Agora queremos que inverter e dizer se c não é nesta faixa, então nós 619 00:30:23,340 --> 00:30:25,020 precisamos voltar a fazer as coisas de novo. 620 00:30:25,020 --> 00:30:25,900 ALI: Ah, sim. 621 00:30:25,900 --> 00:30:31,720 ROB: Então, enquanto isso não é verdade, nós queremos voltar e 622 00:30:31,720 --> 00:30:34,470 pedir para outro personagem. 623 00:30:34,470 --> 00:30:36,880 Será que todo mundo vê isso? 624 00:30:36,880 --> 00:30:38,830 Perguntas sobre isso? 625 00:30:38,830 --> 00:30:39,400 Okay. 626 00:30:39,400 --> 00:30:43,480 >> Então, agora temos um personagem válido que podemos maiúsculas. 627 00:30:43,480 --> 00:30:47,150 ALI: Então, o que o próximo passo para mudar pra maiúsculas isso? 628 00:30:49,994 --> 00:30:51,890 COLUNA 23: Adicionar 32. 629 00:30:51,890 --> 00:30:52,600 ALI: Você adiciona - 630 00:30:52,600 --> 00:30:54,150 Desculpe, o que? 631 00:30:54,150 --> 00:30:56,580 COLUNA 23: Você não pode simplesmente adicionar 32? 632 00:30:56,580 --> 00:31:02,360 ROB: Então, sim, e não em termos de números de mágica. 633 00:31:02,360 --> 00:31:04,610 Você só deve estar usando uma única citação coisas. 634 00:31:04,610 --> 00:31:06,450 COLUNA 23: Ok, bem - 635 00:31:06,450 --> 00:31:07,250 Rob: Mas você pode obter 32 - 636 00:31:07,250 --> 00:31:11,870 ALI: Como você conseguiu o número 32, eu acho, é o que estamos dizendo. 637 00:31:11,870 --> 00:31:18,060 COLUNA 23: [inaudível] 638 00:31:18,060 --> 00:31:22,158 ROB: Então podemos chegar com o número 32 junto - 639 00:31:22,158 --> 00:31:24,468 COLUNA 23: [inaudível]? 640 00:31:24,468 --> 00:31:24,930 ROB: Yeah. 641 00:31:24,930 --> 00:31:28,540 Mas se nós vamos fazê-lo em duas etapas que fizemos antes com 642 00:31:28,540 --> 00:31:29,950 as coisas posição. 643 00:31:29,950 --> 00:31:36,910 Portanto, a posição em que o alfabeto c passa a ser menos c é minúscula 644 00:31:36,910 --> 00:31:42,360 'A'. Então, se entramos em uma minúscula 'd', a posição vai ser 3. 645 00:31:42,360 --> 00:31:46,490 E agora queremos levar as coisas para o intervalo maiúsculas de coisas. 646 00:31:46,490 --> 00:31:55,376 Então, agora a nossa nova c vai ser a posição do 'A' maiúsculo plus. 647 00:31:55,376 --> 00:32:00,090 Então, as pessoas ver como é que nos traz - 648 00:32:00,090 --> 00:32:04,140 estamos mudando a partir do intervalo minúsculas, a profundidade exata em que estávamos 649 00:32:04,140 --> 00:32:07,650 intervalo, e descer para o intervalo em maiúsculas, e indo tão longe 650 00:32:07,650 --> 00:32:10,610 para ele novamente, o que vai ser o mesmo personagem, mas agora 651 00:32:10,610 --> 00:32:12,550 maiúscula. 652 00:32:12,550 --> 00:32:16,490 ALI: E para as pessoas que foram confundidos pela forma como ele disse apenas 32, 653 00:32:16,490 --> 00:32:20,390 basicamente, ele combinou ambos em um comunicado. 654 00:32:20,390 --> 00:32:24,550 Então uma maneira equivalente de escrever isto para dizer que você pode apenas uma espécie de 655 00:32:24,550 --> 00:32:28,190 posição substituto, o c menos 'um', e colocá-lo aqui. 656 00:32:28,190 --> 00:32:31,330 Então, o que ele fez, eu não - 657 00:32:31,330 --> 00:32:44,510 newc de char = maiúscula "A" mais c menos minúsculas 'a'. E por causa da álgebra, 658 00:32:44,510 --> 00:32:47,090 você pode movê-los. 659 00:32:47,090 --> 00:32:52,960 Você também pode dizer que você pode movê-la para carbonizar newc = maiúscula "A" 660 00:32:52,960 --> 00:32:55,620 menos minúsculas 'a' mais c. 661 00:32:55,620 --> 00:32:58,650 E isso, você vai perceber se voltar para o gráfico. 662 00:33:01,160 --> 00:33:06,300 Nós temos letras maiúsculas de minúsculas é de 65 e um é de 97. 663 00:33:06,300 --> 00:33:09,800 Então, 65-97 é -32. 664 00:33:09,800 --> 00:33:10,020 >> Oi. 665 00:33:10,020 --> 00:33:10,930 Sente-se. 666 00:33:10,930 --> 00:33:12,180 Oh. 667 00:33:16,240 --> 00:33:17,980 Você pode sentar aqui. 668 00:33:17,980 --> 00:33:20,805 Legal, tudo bem, maravilhoso. 669 00:33:20,805 --> 00:33:22,390 Bem-vindo à seção. 670 00:33:22,390 --> 00:33:25,110 Você notará que a diferença é de 32. 671 00:33:25,110 --> 00:33:28,150 Então é aí que ele tem esse número. 672 00:33:28,150 --> 00:33:32,140 Mas não é, como Rob diz, a melhor maneira de fazê-lo, porque tem o estranho 673 00:33:32,140 --> 00:33:35,260 confusão número mágico. 674 00:33:35,260 --> 00:33:38,710 ROB: Você deve usar o capital Um minúsculas menos um. 675 00:33:38,710 --> 00:33:43,045 Você não deve utilizar apenas em linha reta 32. 676 00:33:43,045 --> 00:33:45,020 COLUNA 24: Por que é que, de novo? 677 00:33:45,020 --> 00:33:49,860 Por que você não deve usar 32? 678 00:33:49,860 --> 00:33:55,630 ALI: Se fizéssemos isso, seria de char newc = -32 + c. 679 00:33:55,630 --> 00:34:00,030 E se você não ver qualquer parte do resto do mesmo, se esse se foi, e você 680 00:34:00,030 --> 00:34:04,720 basta ver esta única linha, então como você sabe o que o 32 é negativo? 681 00:34:04,720 --> 00:34:07,000 É apenas fora do lugar. 682 00:34:07,000 --> 00:34:10,360 ROB: Então seu programa iria funcionar completamente bem. 683 00:34:10,360 --> 00:34:12,960 É só uma coisa de estilo. 684 00:34:12,960 --> 00:34:17,760 Alguém entrar e ler o seu código, eles são como o que significa 32? 685 00:34:17,760 --> 00:34:18,889 Talvez eles não - 686 00:34:18,889 --> 00:34:22,090 Eu provavelmente não iria perceber imediatamente que 32 passa a ser 687 00:34:22,090 --> 00:34:25,100 diferença entre uma letra minúscula e uma letra maiúscula, embora 688 00:34:25,100 --> 00:34:26,510 vamos usar esse fato no próximo problema. 689 00:34:30,210 --> 00:34:31,610 32 é - 690 00:34:31,610 --> 00:34:38,579 Você pode deixar um comentário acima dizendo que 32 é a diferença entre 691 00:34:38,579 --> 00:34:45,290 'A' e 'um'. Mas nesse ponto, por que não usar 'A' e 'a', e você 692 00:34:45,290 --> 00:34:47,469 não é necessário o comentário em seguida. 693 00:34:47,469 --> 00:34:52,739 >> ALI: É apenas as formas acima dele são muito mais limpo, estilo-sábio. 694 00:34:52,739 --> 00:34:54,590 E assim, a programação já que você está apenas começando - 695 00:34:54,590 --> 00:34:57,775 ou eu acho que não, já que você é edi hacker - nunca mente. 696 00:34:57,775 --> 00:34:59,420 É apenas uma boa maneira de ter - 697 00:34:59,420 --> 00:35:01,230 é melhor ter um melhor estilo. 698 00:35:01,230 --> 00:35:02,850 É mais fácil para outras pessoas a ler. 699 00:35:02,850 --> 00:35:06,560 ROB: Você nunca deve precisamos lembrar a tabela ASCII, nunca. 700 00:35:06,560 --> 00:35:09,505 Você deve apenas ser capaz de usar as aspas simples. 701 00:35:12,390 --> 00:35:12,730 Perguntas? 702 00:35:12,730 --> 00:35:13,980 ALI: Todo mundo bem? 703 00:35:16,020 --> 00:35:16,430 ROB: Okay. 704 00:35:16,430 --> 00:35:23,320 Assim, o problema seguinte é substancial. 705 00:35:23,320 --> 00:35:24,660 Assim, o próximo problema nos pede - 706 00:35:27,880 --> 00:35:31,570 ALI: O problema seguinte é pedir-nos para fazer a mesma coisa, mas de usar 707 00:35:31,570 --> 00:35:32,640 operadores bit a bit. 708 00:35:32,640 --> 00:35:35,170 ROB: E, claro, nós não vimos ainda operadores bit a bit. 709 00:35:35,170 --> 00:35:38,874 Então, vamos agora discutir os. 710 00:35:38,874 --> 00:35:39,540 ALI: Ser animado. 711 00:35:39,540 --> 00:35:41,490 Eles são super divertido. 712 00:35:41,490 --> 00:35:47,927 >> ROB: Então os operadores regulares, como x mais y, subtração, multiplicação, divisão. 713 00:35:47,927 --> 00:35:50,850 ALI: Escreva-lo neste prompt. 714 00:35:50,850 --> 00:35:55,420 Rob: Há também%, se você ainda não viu, que você pode usar pelo 715 00:35:55,420 --> 00:35:57,130 por cento de símbolo. 716 00:35:57,130 --> 00:35:59,090 Mas não vamos usar aqueles para este problema. 717 00:35:59,090 --> 00:36:01,400 Queremos usar operadores bit a bit. 718 00:36:01,400 --> 00:36:06,250 Agora lembre-se, que trouxe em uma palestra. 719 00:36:06,250 --> 00:36:10,760 Eu não tenho certeza se temos discutido binário além disso. 720 00:36:10,760 --> 00:36:13,710 Mas lembre-se que cada número único é representado - 721 00:36:13,710 --> 00:36:14,540 bem tudo, - 722 00:36:14,540 --> 00:36:17,860 está representada em 1s e 0s em binário. 723 00:36:17,860 --> 00:36:27,320 Então isso significa que quando eu digo que o número 8, acontece que eu sei que isso é 724 00:36:27,320 --> 00:36:30,240 como, 1000. 725 00:36:30,240 --> 00:36:35,530 Operadores bit a bit o que vamos fazer é operar sobre esses bits - 726 00:36:35,530 --> 00:36:37,000 se operar sobre estes bits diretamente. 727 00:36:40,160 --> 00:36:42,490 Agora estou mais lidando, em termos de oito. 728 00:36:42,490 --> 00:36:45,930 Estou lidando, em termos de 1000, e eu quero fazer as coisas com os 729 00:36:45,930 --> 00:36:47,670 bits individuais. 730 00:36:47,670 --> 00:36:52,520 Então, Ali escreveu os operadores bit a bit aqui, mas isso é - 731 00:36:55,060 --> 00:36:58,020 O número 8 nós vamos usar como um dos números de nosso exemplo. 732 00:36:58,020 --> 00:37:02,980 E a representação binária é 1000. 733 00:37:02,980 --> 00:37:06,520 Vamos usar outro número, 5 - 734 00:37:06,520 --> 00:37:12,070 realmente vamos usar 9 e 5. 735 00:37:12,070 --> 00:37:15,778 E a 5 de representação binário é 00 - 736 00:37:15,778 --> 00:37:18,380 0101. 737 00:37:18,380 --> 00:37:19,480 ALI: É bom todo mundo sobre isso? 738 00:37:19,480 --> 00:37:21,040 O material binário? 739 00:37:21,040 --> 00:37:23,740 Foi a partir da primeira palestra? 740 00:37:23,740 --> 00:37:29,070 >> ROB: Assim, mesmo se você não está totalmente em cima de como converter as coisas 741 00:37:29,070 --> 00:37:31,700 binária, isso não é inteiramente importante para este problema. 742 00:37:31,700 --> 00:37:36,560 Nós vamos usá-la, mas você terá muitas chances mais para descobrir como 743 00:37:36,560 --> 00:37:39,250 rapidamente transformar as coisas em binário. 744 00:37:39,250 --> 00:37:43,820 Então, usando 9 e 5, agora temos os nossos operadores bit a bit. 745 00:37:43,820 --> 00:37:48,620 Ah, e também, 9 e 5, se for um número inteiro, então realmente é 32 bits, 746 00:37:48,620 --> 00:37:53,150 que significa que temos como 0, 0, 0, 0 um monte de vezes, em seguida, 747 00:37:53,150 --> 00:37:55,330 101 no fim. 748 00:37:55,330 --> 00:37:58,530 Isso é apenas porque, não importa o que você faz, em números inteiros, de 32 bits. 749 00:37:58,530 --> 00:38:01,570 Só porque nós só precisa de quatro bits para representar 9 não significa que não somos 750 00:38:01,570 --> 00:38:05,500 utilizando-se os outros 27 bits para apenas 0s. 751 00:38:05,500 --> 00:38:10,110 ALI: Só para esclarecer, um destes números que um 0 ou um 1 é um bit. 752 00:38:10,110 --> 00:38:11,830 Este é 4 bits. 753 00:38:11,830 --> 00:38:14,320 Como tantas Rob disse que as máquinas de armazená-los em 32. 754 00:38:14,320 --> 00:38:19,430 Então eles teriam 32 de um 0 ou um 1. 755 00:38:19,430 --> 00:38:22,190 Cool? 756 00:38:22,190 --> 00:38:23,610 ROB: Os operadores bit a bit. 757 00:38:23,610 --> 00:38:27,310 O primeiro que vamos tratar, vamos fazer e. 758 00:38:27,310 --> 00:38:31,260 Então, se fizermos 9 e 5. 759 00:38:31,260 --> 00:38:38,310 Então, o que faz é e, pouco a pouco, ele compara os bits dos dois números 760 00:38:38,310 --> 00:38:44,860 e se ambos os números são 1, então ele irá retornar um 1. 761 00:38:44,860 --> 00:38:50,870 Se a pessoa é um 0 e o outro é um 1, ou ambos são 0s, em seguida, ele retorna um 0. 762 00:38:50,870 --> 00:38:53,060 Assim, você pode pensar nisso como seus ANDs lógicas. 763 00:38:53,060 --> 00:38:59,270 Como você precisa de verdade e verdadeiro para retornar verdadeiro, mas o verdadeiro eo falso é falso. 764 00:38:59,270 --> 00:39:02,390 Então é a mesma coisa, mas agora estamos lidando com isso com apenas bits. 765 00:39:02,390 --> 00:39:04,910 >> ALI: Então, se você olhar para isso, você vai ter um - 766 00:39:04,910 --> 00:39:08,490 você alinhá-los, por isso vai ser 1 e 0. 767 00:39:08,490 --> 00:39:11,036 Vocês acham que seria - o que teria que avaliar para? 768 00:39:11,036 --> 00:39:11,770 COLUNA 25: 1. 769 00:39:11,770 --> 00:39:12,270 ALI: Cool. 770 00:39:12,270 --> 00:39:16,850 Ou não. 771 00:39:16,850 --> 00:39:18,830 Desculpe. 772 00:39:18,830 --> 00:39:21,290 Então, isso faz sentido? 773 00:39:21,290 --> 00:39:23,200 Então, qual é a resposta coletivo de novo? 774 00:39:23,200 --> 00:39:24,750 Desculpe. 775 00:39:24,750 --> 00:39:27,530 Então, se temos 1 e 0, então o que você ganha? 776 00:39:27,530 --> 00:39:30,260 ROB: Então você acha de como você diz e em voz alta. 777 00:39:30,260 --> 00:39:37,550 Se tiver dois bits, x e y, é preciso x e y ser 1, a fim de que 778 00:39:37,550 --> 00:39:40,770 para avaliar a verdadeira - ou, para que ele para avaliar a 1. 779 00:39:40,770 --> 00:39:45,650 Se x ou y são 0, em seguida, ele avalia como falso ou 0. 780 00:39:45,650 --> 00:39:49,165 LUCAS: É bom lembrar também que um é verdadeiro e 0 é falso. 781 00:39:49,165 --> 00:39:51,684 Então se você tem verdadeiro e falso, é falso. 782 00:39:51,684 --> 00:39:53,570 Mas, então, verdadeira e verdadeira, é verdade. 783 00:39:53,570 --> 00:39:55,040 Falsa e falsa, falsa. 784 00:39:55,040 --> 00:39:57,650 ALI: Temos verdadeiro e falso. 785 00:39:57,650 --> 00:39:58,530 Assim, 1 e 0. 786 00:39:58,530 --> 00:40:00,380 Então, novamente, desculpe, mais uma vez? 787 00:40:00,380 --> 00:40:02,210 COLUNA 25: Seria 0. 788 00:40:02,210 --> 00:40:03,560 Sim, legal. 789 00:40:03,560 --> 00:40:05,400 E então nós temos 0 e 1 - 790 00:40:05,400 --> 00:40:06,260 COLUNA 25: [inaudível] 791 00:40:06,260 --> 00:40:06,680 ALI: Yeah. 792 00:40:06,680 --> 00:40:09,790 Assim, você pode sempre trocá-los - 793 00:40:09,790 --> 00:40:12,150 Então, se você tem 0 e 0? 794 00:40:12,150 --> 00:40:12,618 SPEAKER 4: 1? 795 00:40:12,618 --> 00:40:14,490 0? 796 00:40:14,490 --> 00:40:16,230 ROB: Então é 0. 797 00:40:16,230 --> 00:40:18,870 Não é que os dois números tem de ser o mesmo. 798 00:40:18,870 --> 00:40:22,030 É que ambos os números precisam ser 1. 799 00:40:22,030 --> 00:40:26,150 ALI: Assim, ambos tem que ser verdadeiro para que ela seja verdadeira. 800 00:40:26,150 --> 00:40:26,950 Então, isso é 0. 801 00:40:26,950 --> 00:40:30,540 E então você tem um 1%, o que é? 802 00:40:30,540 --> 00:40:32,640 ROB: Estes números são muito bons. 803 00:40:32,640 --> 00:40:34,362 Eles têm todo o possível - 804 00:40:34,362 --> 00:40:36,210 ALI: Bom trabalho, wow. 805 00:40:36,210 --> 00:40:37,080 Ok, legal. 806 00:40:37,080 --> 00:40:39,220 Então, isso faz sentido para todos? 807 00:40:39,220 --> 00:40:41,770 >> ROB: Então agora vamos fazer |. 808 00:40:41,770 --> 00:40:51,650 E isso vai ser muito semelhante, mas agora, em vez de x e y a necessidade de 809 00:40:51,650 --> 00:40:54,880 ser de 1 para que ele para avaliar a um, agora é só x ou 810 00:40:54,880 --> 00:40:56,360 y tem de ser 1. 811 00:40:56,360 --> 00:40:59,580 ALI: Então 1 | 0 avalia - 812 00:40:59,580 --> 00:41:00,270 CLASSE: 1. 813 00:41:00,270 --> 00:41:01,690 ALI: Cool. 814 00:41:01,690 --> 00:41:03,710 0 | 1 avalia - 815 00:41:03,710 --> 00:41:04,420 CLASSE: 1. 816 00:41:04,420 --> 00:41:06,726 ALI: Legal, e em seguida 0 | 0 - 817 00:41:06,726 --> 00:41:07,600 CLASSE: 0. 818 00:41:07,600 --> 00:41:09,320 ALI: Sim, e depois 1 | 1 - 819 00:41:09,320 --> 00:41:10,180 CLASSE: 1. 820 00:41:10,180 --> 00:41:12,090 ALI: Cool. 821 00:41:12,090 --> 00:41:14,060 Então, isso é como dois operadores bit a bit. 822 00:41:14,060 --> 00:41:15,430 Impressionante. 823 00:41:15,430 --> 00:41:16,440 ROB: Então agora vamos fazer ^. 824 00:41:16,440 --> 00:41:18,470 ALI: Devemos fazer todos eles? 825 00:41:18,470 --> 00:41:20,620 ROB: Sim, porque eu acho que nós vamos usá-lo - 826 00:41:20,620 --> 00:41:22,340 utilizando todos eles. 827 00:41:22,340 --> 00:41:23,150 ALI: Okay. 828 00:41:23,150 --> 00:41:23,570 Então - 829 00:41:23,570 --> 00:41:25,540 ROB: Eu acho que não precisa. 830 00:41:25,540 --> 00:41:31,830 ALI: Então ^ obras em que você tem que ter exatamente uma verdadeira e uma falsa. 831 00:41:31,830 --> 00:41:34,330 ^ Significa OU exclusivo. 832 00:41:34,330 --> 00:41:36,650 Então agora não é - 833 00:41:36,650 --> 00:41:41,220 Se x e y são ambos 1, agora é falso. 834 00:41:41,220 --> 00:41:46,920 Essa é a diferença entre ^ e |, é que OU, você pode ter, se x é 835 00:41:46,920 --> 00:41:49,440 verdade ou y é verdadeiro, então estamos bem. 836 00:41:49,440 --> 00:41:55,176 Não, ^ diz que se X é verdadeiro, y deve ser falsa, ou então não é verdade. 837 00:41:55,176 --> 00:41:56,814 Você tem uma pergunta? 838 00:41:56,814 --> 00:42:00,526 >> COLUNA 26: [inaudível] 839 00:42:00,526 --> 00:42:00,990 ALI: Yeah. 840 00:42:00,990 --> 00:42:01,830 É uma espécie de similar. 841 00:42:01,830 --> 00:42:07,320 ROB: Sim, por isso, quando você chegar a esse material de hardware de baixo nível, estes são 842 00:42:07,320 --> 00:42:10,870 os tipos de operações que você está lidando. 843 00:42:10,870 --> 00:42:13,200 Ao nível do hardware, você só vai lidar com bits. 844 00:42:13,200 --> 00:42:14,950 Você não lidar com números. 845 00:42:18,030 --> 00:42:23,502 ALI: Ok, para ^, ou se você tem um ^ 0, o que deve avaliar para que? 846 00:42:23,502 --> 00:42:24,840 CLASSE: 1. 847 00:42:24,840 --> 00:42:25,480 ALI: Cool. 848 00:42:25,480 --> 00:42:26,010 Se você tem 849 00:42:26,010 --> 00:42:28,370 0 ^ 1? CLASSE: 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 E, em seguida, 1 ^ 1? 854 00:42:33,460 --> 00:42:35,050 CLASSE: 0. 855 00:42:35,050 --> 00:42:37,710 ALI: Cool, impressionante. 856 00:42:37,710 --> 00:42:38,620 O próximo - 857 00:42:38,620 --> 00:42:40,520 ROB: Eu acho que estes são tudo o que temos de lidar. 858 00:42:40,520 --> 00:42:41,490 Só vamos fazer isso. 859 00:42:41,490 --> 00:42:43,242 ALI: A única vez que vamos ter de fazer - 860 00:42:43,242 --> 00:42:44,912 ROB: Oh, que o será para o último problema. 861 00:42:44,912 --> 00:42:47,070 COLUNA 27: Espera, mais uma vez? 862 00:42:47,070 --> 00:42:47,940 ALI: Desculpe, o que foi a sua pergunta? 863 00:42:47,940 --> 00:42:49,564 >> COLUNA 27: Você pode explicar isso mais uma vez? 864 00:42:49,564 --> 00:42:50,100 O ^? 865 00:42:50,100 --> 00:42:51,490 COLUNA 27: exclus - sim. 866 00:42:51,490 --> 00:42:55,800 ALI: Então, o que é exclusivo ou meios que tem que ser exclusivamente 867 00:42:55,800 --> 00:43:02,970 uma falsa verdade e uma, de forma um 1 e um 0, contra a OR, você pode ter - 868 00:43:02,970 --> 00:43:06,170 um deles tem que ser verdade, ou de ambos pode ser verdade, pois 869 00:43:06,170 --> 00:43:07,130 para avaliar a verdade. 870 00:43:07,130 --> 00:43:10,030 COLUNA 27: Então 0 e 0 seria falsa. 871 00:43:10,030 --> 00:43:10,450 ALI: Yeah. 872 00:43:10,450 --> 00:43:11,780 Mas se você tem uma | 873 00:43:11,780 --> 00:43:14,290 1, que iria avaliar a verdade. 874 00:43:14,290 --> 00:43:18,210 Mas se você tem uma ^ 1, como nós, que avalia como false. 875 00:43:18,210 --> 00:43:21,220 Porque não é exclusivamente uma é verdadeira. 876 00:43:21,220 --> 00:43:26,930 ROB: E isso pode ou não ser útil, mas aviso que o ^ é 877 00:43:26,930 --> 00:43:28,890 igual a apenas tomando o | 878 00:43:28,890 --> 00:43:30,290 menos o &. 879 00:43:30,290 --> 00:43:32,250 E você pode realmente pensar desta maneira. 880 00:43:32,250 --> 00:43:37,290 ^ É apenas ORing tudo juntos, mas tirando qualquer um dos bits, onde 881 00:43:37,290 --> 00:43:38,610 ambos eram verdadeiras. 882 00:43:38,610 --> 00:43:41,620 Assim, e retorna tudo onde ambos eram verdadeiras. 883 00:43:41,620 --> 00:43:45,850 | Retorna tudo que um ou ambos eram verdadeiras. 884 00:43:45,850 --> 00:43:51,050 Assim, subtraindo que a partir da | dá-lhe a ^. 885 00:43:51,050 --> 00:43:52,040 ALI: Alguma pergunta? 886 00:43:52,040 --> 00:43:53,290 Este foi um monte de informações. 887 00:43:55,980 --> 00:43:57,510 Todo mundo bem? 888 00:43:57,510 --> 00:44:00,360 >> ROB: Podemos ir sobre os mais próximos para o próximo problema, slash 889 00:44:00,360 --> 00:44:01,680 que horas são? 890 00:44:01,680 --> 00:44:04,010 Eles não precisam disso até o próximo problema. 891 00:44:04,010 --> 00:44:07,830 ALI: Eu pensei que era um presente. 892 00:44:07,830 --> 00:44:08,830 ROB: Não é. 893 00:44:08,830 --> 00:44:10,085 ALI: Você tem certeza? 894 00:44:10,085 --> 00:44:11,300 ROB: Sim, eu sou positivo. 895 00:44:11,300 --> 00:44:12,970 ALI: Por que não começar a fazer o próximo problema? 896 00:44:15,710 --> 00:44:19,790 O problema é, mais uma vez, a mudar de minúsculas para maiúsculas, e este 897 00:44:19,790 --> 00:44:21,720 tempo para usar operadores bit a bit. 898 00:44:21,720 --> 00:44:22,970 ROB: Então nós - 899 00:44:25,290 --> 00:44:29,670 vamos começar com a representação binária de 'A', 'A' maiúsculo, 900 00:44:29,670 --> 00:44:31,750 que é 65. 901 00:44:31,750 --> 00:44:36,150 Assim binário em - 902 00:44:39,960 --> 00:44:47,900 para 'A' = 65, que é =, em binário - 903 00:44:47,900 --> 00:44:51,380 Eu vou estragar o número de 0s - isso. 904 00:44:51,380 --> 00:44:53,670 ALI: Então, isso faz sentido para todos? 905 00:44:53,670 --> 00:44:57,620 Então, 1, nenhum 2s, 4s não, não 8s, não - 906 00:45:00,238 --> 00:45:07,075 não 16s, 32s não, e depois um 64. 907 00:45:07,075 --> 00:45:08,685 ROB: Sim, eu acho que é uma 0s demais. 908 00:45:08,685 --> 00:45:09,600 ALI: Desculpe. 909 00:45:09,600 --> 00:45:13,410 >> ROB: Ok, então temos o conjunto de 64, e nós temos o conjunto 1, e combinando os 910 00:45:13,410 --> 00:45:16,030 juntos, nós temos 65. 911 00:45:16,030 --> 00:45:17,470 ALI: feijão frescos? 912 00:45:17,470 --> 00:45:19,640 ROB: Então agora, minúsculas 'a'- 913 00:45:22,220 --> 00:45:24,260 notar 97 - 914 00:45:24,260 --> 00:45:26,370 que é a diferença entre 97 e 65? 915 00:45:26,370 --> 00:45:27,530 COLUNA 28: 32. 916 00:45:27,530 --> 00:45:28,130 ROB: Yeah. 917 00:45:28,130 --> 00:45:35,920 Então é 32, que é o seu próprio pouco, de modo que vai ser 110001. 918 00:45:35,920 --> 00:45:41,200 E isso vai ser verdade para todos os possíveis caracteres. 919 00:45:41,200 --> 00:45:49,800 Então, se pensamos em 'D', que vai ser 68, que vai ser 1000011. 920 00:45:49,800 --> 00:45:56,310 E, em seguida, em letras minúsculas 'd' vai ser 68 plus 32, que é de 100, o que é 921 00:45:56,310 --> 00:46:00,010 vai ser a mesma coisa que esta foi, apenas lançando o 922 00:46:00,010 --> 00:46:04,300 32 outra vez, assim 1100011. 923 00:46:04,300 --> 00:46:08,610 Assim, a diferença entre uma letra maiúscula e minúsculas está apenas lançando 924 00:46:08,610 --> 00:46:10,170 que 32 bits posição. 925 00:46:10,170 --> 00:46:17,670 COLUNA 29: Não é 1000100? 926 00:46:17,670 --> 00:46:19,670 ROB: Espere, é 100 - 927 00:46:19,670 --> 00:46:20,480 algo que eu fiz de errado. 928 00:46:20,480 --> 00:46:21,730 Isso não era verdade. 929 00:46:28,710 --> 00:46:31,150 Eu estava pensando que era uma diferença de 3, então eu apenas preso 930 00:46:31,150 --> 00:46:33,970 o binário 3 na extremidade. 931 00:46:33,970 --> 00:46:36,710 Este deve ser o certo. 932 00:46:36,710 --> 00:46:37,150 ALI: Obrigado. 933 00:46:37,150 --> 00:46:38,080 Bom para apontar isso. 934 00:46:38,080 --> 00:46:40,320 Isso foi nítido. 935 00:46:40,320 --> 00:46:43,450 Tudo bem, está claro para as pessoas? 936 00:46:43,450 --> 00:46:45,700 >> ROB: A diferença entre a versão em maiúsculas e minúsculas é 937 00:46:45,700 --> 00:46:49,250 sempre só vai ser 32, e por isso sempre vai ser um único bit 938 00:46:49,250 --> 00:46:51,840 que tem de ser virado para mudar entre os dois. 939 00:46:51,840 --> 00:46:54,330 ALI: Então, nesse caso, saber a diferença entre a capital A e 940 00:46:54,330 --> 00:46:57,130 a minúscula um é uma coisa boa. 941 00:46:57,130 --> 00:47:01,950 Não em seu código, mas conceitualmente, pelo menos, é bom. 942 00:47:01,950 --> 00:47:05,880 Então, vocês podem ir em frente e código que nos Espaços agora. 943 00:47:05,880 --> 00:47:08,580 Ou devemos apenas discutir isso? 944 00:47:08,580 --> 00:47:09,760 ROB: Nós podemos apenas discutir o assunto. 945 00:47:09,760 --> 00:47:10,680 Eu não sei. 946 00:47:10,680 --> 00:47:11,680 Vocês podem tentar. 947 00:47:11,680 --> 00:47:13,560 Falar entre si por um pouco. 948 00:47:13,560 --> 00:47:16,390 Nós vamos dar-lhe uma chance de codificá-lo. 949 00:47:16,390 --> 00:47:17,640 [Interpondo VOZES] 950 00:47:19,785 --> 00:47:22,695 ALI: - é legal 951 00:47:22,695 --> 00:47:26,590 COLUNA 30: Isto é como comédia hacker. 952 00:47:26,590 --> 00:47:31,060 ALI: Sim, estamos apenas dizendo a notícia, passando por isso. 953 00:47:31,060 --> 00:47:32,310 >> Rob: E estamos de volta. 954 00:47:34,950 --> 00:47:35,405 ALI: Isso é meio estranho. 955 00:47:35,405 --> 00:47:38,720 Eu sinto que nós devemos ter uma estação de notícias CS50 e poderíamos 956 00:47:38,720 --> 00:47:41,500 realmente sentar-se assim. 957 00:47:41,500 --> 00:47:43,500 ROB: Hacker News. 958 00:47:43,500 --> 00:47:46,848 ALI: Hacker News 50. 959 00:47:46,848 --> 00:47:49,210 ALI: Sinta-se livre para fazer qualquer pergunta se você está confuso. 960 00:47:52,280 --> 00:47:53,980 ROB: Alguém está preso? 961 00:47:53,980 --> 00:47:57,160 ALI: Sim, isso é uma coisa boa. 962 00:47:57,160 --> 00:47:58,590 ALI: Espera, você está preso em sua cadeira? 963 00:47:58,590 --> 00:48:01,010 Oh. 964 00:48:01,010 --> 00:48:02,260 Eu estava um pouco preocupado. 965 00:48:06,670 --> 00:48:12,150 ROB: Porque eu só percebi que vamos querer 966 00:48:12,150 --> 00:48:13,300 outro operador bit a bit. 967 00:48:13,300 --> 00:48:16,985 Por enquanto, vamos apenas converte maiúsculas em minúsculas. 968 00:48:23,280 --> 00:48:25,220 ALI: Desculpe, mas se todos se que o anúncio? 969 00:48:25,220 --> 00:48:27,755 Nós estamos indo para ir de maiúsculas para minúsculas. 970 00:48:27,755 --> 00:48:30,990 ROB: Então vamos discutir minúsculas para maiúsculas logo depois. 971 00:48:33,820 --> 00:48:36,650 Oh, não. 972 00:48:36,650 --> 00:48:39,560 Temos um bug no presente, que, eu acho, nunca tentou fugir. 973 00:48:39,560 --> 00:48:44,140 Que é apenas isso char c precisa ser declarada fora do circuito, porque 974 00:48:44,140 --> 00:48:45,805 seu escopo é restrito no circuito. 975 00:48:49,200 --> 00:48:53,060 COLUNA 32: Neste caso, é errado usar um número? 976 00:48:53,060 --> 00:48:56,930 ROB: Eh, você não precisa. 977 00:48:56,930 --> 00:49:02,040 Se eu garantiu que o capital 'A'- ou, minúsculas' a 'capital menos' A ' 978 00:49:02,040 --> 00:49:09,340 era exatamente um pouco, mas que você não sabe que é 32 - 979 00:49:09,340 --> 00:49:13,160 as coisas iriam funcionar tão bem se fosse o de 16 bits que foi virado - ou 980 00:49:13,160 --> 00:49:14,610 não, eu acho que wouldn't - 981 00:49:14,610 --> 00:49:18,270 ou o de 64 bits foram capotou, possivelmente. 982 00:49:18,270 --> 00:49:23,230 Mas você não precisa usar 32. 983 00:49:23,230 --> 00:49:26,141 Você poderia usar minúsculas 'A' 'a' capital menos. 984 00:49:26,141 --> 00:49:29,340 >> COLUNA 32: Okay. 985 00:49:29,340 --> 00:49:32,996 O que você pode fazer se você sente como se estivesse escrevendo demais é que você pode defini-lo 986 00:49:32,996 --> 00:49:33,435 na parte superior. 987 00:49:33,435 --> 00:49:41,830 Assim, você pode ser assim, a diferença int = minúsculas 'A' 'a' capital menos. E 988 00:49:41,830 --> 00:49:43,980 então você pode digitar diferença em seu lugar. 989 00:49:43,980 --> 00:49:45,110 Isso é válido. 990 00:49:45,110 --> 00:49:48,002 Mas apenas usar o número 32 é uma espécie de - 991 00:49:48,002 --> 00:49:51,104 COLUNA 33: Mesmo que seja por causa do fato de que é o de 32 bits? 992 00:49:51,104 --> 00:49:52,570 ALI: Yeah. 993 00:49:52,570 --> 00:49:54,960 ROB: Não poderia ser - 994 00:49:54,960 --> 00:49:57,780 a única garantia que precisamos fazer é que a diferença entre o 995 00:49:57,780 --> 00:49:59,480 minúsculas e maiúsculas é um pouco. 996 00:49:59,480 --> 00:50:04,670 Não deve importar que ele passa a ser o de 32 bits que está capotou. 997 00:50:04,670 --> 00:50:06,610 Por considerações de tempo, vamos começar a ir por isso. 998 00:50:09,170 --> 00:50:10,370 Tudo bem se você não tiver terminado. 999 00:50:10,370 --> 00:50:13,090 Não se preocupe com isso. 1000 00:50:13,090 --> 00:50:16,260 ROB: Supondo que c é uma letra maiúscula - 1001 00:50:16,260 --> 00:50:18,030 não temos de assumir c é uma letra maiúscula. 1002 00:50:18,030 --> 00:50:20,750 Sabemos c é uma letra maiúscula após este loop while - 1003 00:50:20,750 --> 00:50:22,160 do-while. 1004 00:50:22,160 --> 00:50:28,590 Então, isso significa que é algo como isto "A". Então, se nós queremos levar este 1005 00:50:28,590 --> 00:50:32,895 'A' a este 'a', o que precisamos fazer? 1006 00:50:36,890 --> 00:50:41,920 Então, como vamos converter e virar a pouco? 1007 00:50:48,040 --> 00:50:49,450 ALI: Como é que vamos lançá-lo? 1008 00:50:49,450 --> 00:50:53,010 >> ROB: Então, nós sabemos que queremos inverter a 32 bits. 1009 00:50:53,010 --> 00:50:59,722 Então que vai fazer 'a' menos 'A', ou podemos escrever 32, mas - 1010 00:50:59,722 --> 00:51:03,090 Droga, é o contrário. 1011 00:51:03,090 --> 00:51:07,250 ALI: Ok, Rob aqui está cálculo do número, número mágico 32. 1012 00:51:07,250 --> 00:51:12,000 Então, ele está descobrindo onde essa área pouco aleta seria. 1013 00:51:12,000 --> 00:51:14,810 E então o que é que vamos colocar, onde os pontos de interrogação são? 1014 00:51:14,810 --> 00:51:16,740 ROB: Como é que vamos virar essa parte? 1015 00:51:16,740 --> 00:51:22,784 Em termos de letra maiúscula, é a 0, e queremos nos tornar um 1. 1016 00:51:22,784 --> 00:51:23,660 COLUNA 34: |. 1017 00:51:23,660 --> 00:51:24,910 ROB: Yeah. 1018 00:51:28,780 --> 00:51:38,190 Portanto, esta é-nos a dizer que tomar 'A'. Estamos ORing com 0 - 1019 00:51:38,190 --> 00:51:40,750 1000 - 1020 00:51:40,750 --> 00:51:44,720 e que = isso. 1021 00:51:44,720 --> 00:51:45,930 ALI: Isso faz sentido para todos? 1022 00:51:45,930 --> 00:51:48,812 Podemos passar por isso, pouco a pouco, se quiser. 1023 00:51:52,030 --> 00:51:56,300 COLUNA 35: Você é [inaudível]? 1024 00:51:56,300 --> 00:51:57,590 ALI: Onde está o sinal de menos? 1025 00:51:57,590 --> 00:51:58,500 ROB: Ah, você quer dizer aqui? 1026 00:51:58,500 --> 00:51:59,070 ALI: Ah, sim. 1027 00:51:59,070 --> 00:52:00,140 ROB: Então eu acho que isso é a gente. 1028 00:52:00,140 --> 00:52:05,670 Poderíamos dizer 32, e agora nós estamos apenas usando os operadores bit a bit. 1029 00:52:05,670 --> 00:52:07,010 ALI: Nós não gostamos de números mágicos. 1030 00:52:07,010 --> 00:52:10,460 Nós não vamos fazer isso. 1031 00:52:10,460 --> 00:52:13,592 Também acho que devemos usar apenas um operador bit a bit - 1032 00:52:13,592 --> 00:52:19,042 COLUNA 36: Se você usar um ^ A, você vai obter 32? 1033 00:52:19,042 --> 00:52:19,980 COLUNA 37: Sim, eu acho - 1034 00:52:19,980 --> 00:52:21,090 ROB: Sim, você vai. 1035 00:52:21,090 --> 00:52:23,320 ALI: Isto é como você teria feito isto para ir 1036 00:52:23,320 --> 00:52:25,370 do capital para minúsculas. 1037 00:52:25,370 --> 00:52:31,130 >> Agora alguém pode me dizer por que Rob e eu mudei o prompt e como fomos 1038 00:52:31,130 --> 00:52:34,040 maiúsculas das minúsculas, em vez de minúsculas para 1039 00:52:34,040 --> 00:52:37,810 maiúsculas, como fizemos antes? 1040 00:52:37,810 --> 00:52:44,520 Alguém tem alguma idéia de por que isso pode ser mais difícil? 1041 00:52:44,520 --> 00:52:44,880 ROB: Então nós faríamos - 1042 00:52:44,880 --> 00:52:46,178 ALI: Sim, vá em frente. 1043 00:52:46,178 --> 00:52:49,640 COLUNA 38: O operador | era apenas realmente bom para somar. 1044 00:52:49,640 --> 00:52:51,200 ALI: Sim, exatamente. 1045 00:52:51,200 --> 00:52:58,320 ROB: Então, o que nós queremos fazer na minúsculas para maiúsculas caso é, 1046 00:52:58,320 --> 00:53:00,175 converter essa a''- 1047 00:53:08,540 --> 00:53:14,820 por isso queremos colocar em alguns números aqui e usar algum operador para que ele vem 1048 00:53:14,820 --> 00:53:21,910 para capital de A. Nós ainda estamos usando provavelmente 32 de alguma forma, mas agora como é que nós 1049 00:53:21,910 --> 00:53:25,280 chegar a este sair para isso? 1050 00:53:40,910 --> 00:53:42,750 Então c - 1051 00:53:42,750 --> 00:53:44,000 oh, eu ainda quero que também - 1052 00:53:46,940 --> 00:53:51,055 ALI: Então agora, se está convertendo de minúsculas para maiúsculas novamente, então nós 1053 00:53:51,055 --> 00:53:55,170 fazer a operação ^, como vocês disseram. 1054 00:53:55,170 --> 00:53:57,650 ROB: Há outras maneiras de fazer as coisas. 1055 00:53:57,650 --> 00:54:01,680 Um monte de operadores bit a bit acabar sendo muito facilmente definível em termos 1056 00:54:01,680 --> 00:54:03,460 de outros operadores bit a bit. 1057 00:54:03,460 --> 00:54:11,150 Então, eu estava indo para não usar ^ ou em tudo, mas ^ funcionou perfeitamente bem. 1058 00:54:11,150 --> 00:54:17,910 >> ALI: Ok, então nós estamos indo para ir no último problema, que é a base - 1059 00:54:17,910 --> 00:54:22,390 o último problema é converter algo em binário. 1060 00:54:22,390 --> 00:54:26,350 Assim, por exemplo, você tem 50, e depois convertê-lo para 1061 00:54:26,350 --> 00:54:31,400 binário, que é 110010. 1062 00:54:31,400 --> 00:54:36,010 E eu acho que vocês todos conhecem binário de aula. 1063 00:54:36,010 --> 00:54:39,270 E você também não devem colocar qualquer 0s líder para ele. 1064 00:54:39,270 --> 00:54:41,460 ROB: Você pode ignorar essa parte para agora. 1065 00:54:41,460 --> 00:54:45,250 O primeiro passo, você pode fazê-lo de modo que não são 0s principais. 1066 00:54:45,250 --> 00:54:49,200 E então nós podemos modificar essa não ter 0s líder, se tivermos tempo. 1067 00:54:49,200 --> 00:54:50,630 ALI: Então não se preocupe com isso. 1068 00:54:50,630 --> 00:54:52,620 Basta tentar entrar em binário. 1069 00:54:55,880 --> 00:54:59,855 Um bom lugar para começar seria - 1070 00:54:59,855 --> 00:55:02,010 ROB: Nós precisamos de pedir um inteiro. 1071 00:55:02,010 --> 00:55:03,150 ALI: Ah, sim, isso é uma boa. 1072 00:55:03,150 --> 00:55:04,170 Podemos começar com isso. 1073 00:55:04,170 --> 00:55:06,870 Assim você pode mudar o prompt. 1074 00:55:06,870 --> 00:55:08,840 Então, ao invés de um personagem, agora que estamos a lidar com números inteiros. 1075 00:55:13,670 --> 00:55:14,920 Cool? 1076 00:55:20,630 --> 00:55:25,300 >> ROB: E agora o que é nosso do-while condição vai ser? 1077 00:55:25,300 --> 00:55:27,750 Ele está pedindo um número inteiro não negativo. 1078 00:55:31,080 --> 00:55:34,280 ALI: Quando queremos manter avisar o usuário para outra coisa? 1079 00:55:34,280 --> 00:55:35,950 Quando ele é menor do que 0. 1080 00:55:35,950 --> 00:55:36,760 ALI: Certo. 1081 00:55:36,760 --> 00:55:38,010 ROB: Enquanto eu for inferior a 0. 1082 00:55:41,090 --> 00:55:45,120 ALI: Agora queremos convertê-lo. 1083 00:55:45,120 --> 00:55:48,150 Vocês têm alguma idéia do que fazer? 1084 00:55:48,150 --> 00:55:49,400 Qualquer inklings? 1085 00:55:53,610 --> 00:55:54,984 Sim. 1086 00:55:54,984 --> 00:55:57,344 COLUNA 39: Nós temos que convertê-lo, ou podemos simplesmente imprimir algumas 0s e 1s 1087 00:55:57,344 --> 00:55:58,760 que seria o número correto? 1088 00:55:58,760 --> 00:56:02,070 Você poderia fazer um loop e contar por potências de 2? 1089 00:56:02,070 --> 00:56:03,320 ROB: sim. 1090 00:56:05,750 --> 00:56:08,425 Você não precisa converter i ao seu binário - 1091 00:56:08,425 --> 00:56:13,720 a representação binária de i não vai caber dentro de i. 1092 00:56:13,720 --> 00:56:19,090 Você só precisa imprimir a representação binária de i. 1093 00:56:19,090 --> 00:56:21,010 ALI: Em outras palavras, você não precisa ir por potências de dois. 1094 00:56:21,010 --> 00:56:23,710 ROB: Porque eu já está sendo armazenados como binários, assim você não precisa 1095 00:56:23,710 --> 00:56:25,110 convertê-lo em binário. 1096 00:56:25,110 --> 00:56:27,260 Basta ir sobre o seu binário, e imprimi-lo. 1097 00:56:30,080 --> 00:56:32,140 E você vai precisar usar bit a bit, porque você quer olhar para 1098 00:56:32,140 --> 00:56:33,390 os bits reais. 1099 00:56:37,060 --> 00:56:38,600 Você não precisa usar bit a bit, mas por favor. 1100 00:56:44,130 --> 00:56:47,160 E isso é verdade - 1101 00:56:47,160 --> 00:56:50,200 você só pode fazer potências de dois multiplicando por dois. 1102 00:56:50,200 --> 00:56:55,120 Nós vamos passar por cima de um dos últimos dois operadores binários bit a bit, 1103 00:56:55,120 --> 00:56:56,410 que é um presente. 1104 00:56:56,410 --> 00:56:58,730 Então, quando você tomar - 1105 00:56:58,730 --> 00:57:00,083 >> ALI: Você pode passar os dois? 1106 00:57:00,083 --> 00:57:01,440 ROB: Yeah. 1107 00:57:01,440 --> 00:57:03,050 Então vamos com 9. 1108 00:57:03,050 --> 00:57:05,210 Assim deslocamento esquerda 9 1 - 1109 00:57:05,210 --> 00:57:12,220 o que deixou meios de deslocamento é simplesmente mover todos os bits para a esquerda e para inserir um 0. 1110 00:57:12,220 --> 00:57:15,530 Então, nós estamos movendo todos os bits de 9 para a esquerda 1111 00:57:15,530 --> 00:57:20,240 posição, o que nos dá - 1112 00:57:26,530 --> 00:57:31,570 Então, observe que mudaram tudo saiu um, e inserido um 0 no 1113 00:57:31,570 --> 00:57:32,730 lado direito. 1114 00:57:32,730 --> 00:57:36,755 Se tivéssemos deslocado para a esquerda por dois, que mudaria tudo saiu por dois, 1115 00:57:36,755 --> 00:57:41,950 e inserir dois 0s para preencher as lacunas. 1116 00:57:41,950 --> 00:57:43,200 Pergunta? 1117 00:57:44,890 --> 00:57:47,510 ALI: Então deslocamento para a direita faz uma coisa semelhante. 1118 00:57:47,510 --> 00:57:53,190 Se você tem um deslocamento para a direita 9, então você está apenas movendo tudo para 1119 00:57:53,190 --> 00:57:57,890 à direita, você perde um dígito, para 100 em vez. 1120 00:57:57,890 --> 00:58:04,142 ROB: Então você é bom que você está perdendo o pouco que passou a ser tudo 1121 00:58:04,142 --> 00:58:05,200 o caminho para a direita. 1122 00:58:05,200 --> 00:58:08,850 Existem diferentes tipos de mudanças certas, mas, basicamente, você pode pensar 1123 00:58:08,850 --> 00:58:11,410 deslocamento para a direita como apenas dividir por 2. 1124 00:58:11,410 --> 00:58:14,430 E você pode pensar de deslocamento à esquerda que multiplicar por dois. 1125 00:58:14,430 --> 00:58:16,490 Então, se você converteu isso - 1126 00:58:16,490 --> 00:58:22,350 se você converteu nove turno 1, que é igual a 10010, se você realmente passou 1127 00:58:22,350 --> 00:58:25,100 através do binário e descobri o que era, que seria apenas 18. 1128 00:58:25,100 --> 00:58:26,880 Nós só multiplicar por 2. 1129 00:58:26,880 --> 00:58:30,982 1001 desvio para a esquerda duas vai ser 36. 1130 00:58:30,982 --> 00:58:32,400 Nós multiplicamos por 4. 1131 00:58:41,740 --> 00:58:45,360 Ok, legal, de modo que é um operador bit a bit útil para este. 1132 00:58:52,570 --> 00:58:53,330 Mais confusão? 1133 00:58:53,330 --> 00:58:54,870 Vocês querem experimentá-lo? 1134 00:58:54,870 --> 00:58:58,970 Ou podemos simplesmente saltar para a direita e iniciá-lo? 1135 00:58:58,970 --> 00:59:01,140 ROB: Nós provavelmente deve saltar para a direita dentro 1136 00:59:01,140 --> 00:59:01,880 ALI: Sim, está bem. 1137 00:59:01,880 --> 00:59:03,370 Rob: E atravessá-la juntos. 1138 00:59:03,370 --> 00:59:04,440 >> ALI: Bem, eu vou entrar nisso. 1139 00:59:04,440 --> 00:59:09,700 Assim como disse no início, vamos apenas passar pouco a pouco. 1140 00:59:09,700 --> 00:59:11,890 Então, nós vamos precisar de um loop. 1141 00:59:11,890 --> 00:59:16,730 Alguém tem uma idéia do melhor tipo de loop para passar por isso? 1142 00:59:16,730 --> 00:59:20,544 Temos laços while, do-while, loops. 1143 00:59:20,544 --> 00:59:22,400 COLUNA 40: Do-while? 1144 00:59:22,400 --> 00:59:25,150 ROB: Então lembre-se do que eu disse antes sobre, estamos apenas usando-enquanto 1145 00:59:25,150 --> 00:59:27,390 loops para obter entrada do usuário. 1146 00:59:27,390 --> 00:59:30,890 Você nunca vai muito bem sempre usá-los para qualquer outra coisa. 1147 00:59:30,890 --> 00:59:33,660 ALI: O problema com loops do-while é que faz alguma coisa antes que verifica 1148 00:59:33,660 --> 00:59:34,470 a condição. 1149 00:59:34,470 --> 00:59:36,540 Assim, poderia fazer algo de ruim - 1150 00:59:36,540 --> 00:59:38,640 gosta, machucou - 1151 00:59:38,640 --> 00:59:40,350 fazer algo que não é possível. 1152 00:59:40,350 --> 00:59:42,290 Então você quer verificar primeiro. 1153 00:59:42,290 --> 00:59:47,620 ROB: Há um monte de casos em que você pode usar loops do-while, mas as pessoas 1154 00:59:47,620 --> 00:59:52,120 não esperam que você usá-los a menos que seja a entrada do usuário. 1155 00:59:52,120 --> 00:59:54,215 Então, nós temos usado a nossa loop do-while para obter i. 1156 00:59:57,160 --> 01:00:01,260 Quantas vezes é nosso laço vai querer loop? 1157 01:00:01,260 --> 01:00:04,060 Queremos loop sobre cada um dos bits de i. 1158 01:00:04,060 --> 01:00:06,302 Quantos bits estão em i? 1159 01:00:06,302 --> 01:00:07,266 COLUNA 41: 32. 1160 01:00:07,266 --> 01:00:07,750 ALI: Yeah. 1161 01:00:07,750 --> 01:00:09,850 ROB: Então há 32 bits. 1162 01:00:09,850 --> 01:00:12,920 Nós não queremos dizer 32. 1163 01:00:12,920 --> 01:00:16,230 Nós em vez quero dizer sizeof - 1164 01:00:16,230 --> 01:00:18,226 que, você já viu que em sala de aula ainda? 1165 01:00:18,226 --> 01:00:19,100 ALI: Nope. 1166 01:00:19,100 --> 01:00:20,380 ROB: Por que dizer que usar - 1167 01:00:20,380 --> 01:00:22,160 sizeof (int) vezes 8 - 1168 01:00:22,160 --> 01:00:23,530 ALI: Então, sizeof é - 1169 01:00:23,530 --> 01:00:27,050 >> COLUNA 42: [inaudível] 1170 01:00:27,050 --> 01:00:27,440 ALI: Interessante. 1171 01:00:27,440 --> 01:00:31,610 Então, sizeof é uma função incorporada C, onde ele apenas diz que o 1172 01:00:31,610 --> 01:00:32,500 número de bits de in - 1173 01:00:32,500 --> 01:00:33,220 ROB: Bytes. 1174 01:00:33,220 --> 01:00:34,210 ALI: Bytes, desculpe - 1175 01:00:34,210 --> 01:00:39,990 o número de bytes que uma variável tem para armazenar um valor. 1176 01:00:39,990 --> 01:00:46,205 Então, eu acho que ele foi em classe, em seguida, um int é de 4 bytes talvez. 1177 01:00:46,205 --> 01:00:46,610 Cool? 1178 01:00:46,610 --> 01:00:50,610 ROB: Mas você não precisa saber que um int é de 4 bytes. 1179 01:00:50,610 --> 01:00:52,670 Você deve ser capaz de dizer - 1180 01:00:52,670 --> 01:00:55,870 você deve usar sizeof (int) para obter 4 bytes. 1181 01:00:55,870 --> 01:00:59,170 E isso é realmente importante para algumas coisas. 1182 01:00:59,170 --> 01:01:01,650 Um int não pode ser de 4 bytes. 1183 01:01:01,650 --> 01:01:04,050 Em outro computador, um int pode ser de 8 bytes. 1184 01:01:04,050 --> 01:01:08,500 Portanto, o seu programa não vai funcionar no computador, porque você hard-coded 32 1185 01:01:08,500 --> 01:01:12,230 bits quando no computador passa a ser de 64 bits. 1186 01:01:12,230 --> 01:01:15,260 ALI: Então você tem o número total de bits que você quer que ele se inverta. 1187 01:01:15,260 --> 01:01:17,480 ROB: E a diferença entre um byte e um bit é que há 1188 01:01:17,480 --> 01:01:19,100 são de 8 bits num byte. 1189 01:01:19,100 --> 01:01:22,110 Então, sizeof (int) retorna 4 bytes, então temos que multiplicar isso 1190 01:01:22,110 --> 01:01:24,420 por 8 para obter 32 bits. 1191 01:01:24,420 --> 01:01:27,680 >> ALI: Ok, então nós sabemos que o máximo e sabemos que quer ir de - 1192 01:01:27,680 --> 01:01:29,260 queremos passar por todos eles. 1193 01:01:29,260 --> 01:01:32,950 Então, nós queremos ir de 0 a numBits. 1194 01:01:32,950 --> 01:01:37,160 Então, alguém sabe como escrever o loop para isso? 1195 01:01:37,160 --> 01:01:37,790 Alguém? 1196 01:01:37,790 --> 01:01:39,680 COLUNA 43: [inaudível] 1197 01:01:39,680 --> 01:01:44,130 ALI: Então você quer atravessar o número i do bit 0 para o 1198 01:01:44,130 --> 01:01:47,840 primeiro bit, o bit de segundo, o terceiro bit, todo o caminho para numBits. 1199 01:01:47,840 --> 01:01:50,972 O número máximo de bits que você pode chegar. 1200 01:01:54,420 --> 01:01:57,780 ROB: O que é o laço comum que usamos o que nós queremos fazer algo x vezes? 1201 01:01:57,780 --> 01:01:58,280 ALI: Para. 1202 01:01:58,280 --> 01:01:59,280 Perfeito. 1203 01:01:59,280 --> 01:02:00,440 Então temos para. 1204 01:02:00,440 --> 01:02:05,242 E então nós vamos criar um iterador, que não vai ser eu. 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 Então, vamos começar do 0. 1208 01:02:09,740 --> 01:02:13,110 E então nós vamos ter a condição para ter certeza, quando você estiver 1209 01:02:13,110 --> 01:02:14,968 passar por ela a cada momento - 1210 01:02:14,968 --> 01:02:16,960 [Interpondo VOZES] 1211 01:02:16,960 --> 01:02:17,960 ROB: j. 1212 01:02:17,960 --> 01:02:19,970 ALI: j é menor do que numBits. 1213 01:02:19,970 --> 01:02:23,680 Então nós não queremos fazer o real é igual a um, porque eles são numBits 1214 01:02:23,680 --> 01:02:25,365 total, e nós começamos a 0. 1215 01:02:25,365 --> 01:02:26,360 Então, nós estamos realmente vai ter - 1216 01:02:26,360 --> 01:02:27,400 COLUNA 44: Ah. 1217 01:02:27,400 --> 01:02:29,300 ALI: Os índices de não terminar em numBits menos 1. 1218 01:02:29,300 --> 01:02:34,070 ROB: Nós rotular os bits de 0 a 31, nós não rotulá-los 1 a 32. 1219 01:02:34,070 --> 01:02:36,970 ALI: E então nós estamos indo para incrementar cada vez por um, porque queremos 1220 01:02:36,970 --> 01:02:38,050 verificar cada um. 1221 01:02:38,050 --> 01:02:39,851 Então vamos j + +. 1222 01:02:39,851 --> 01:02:42,740 >> COLUNA 45: Por que está fazendo isso? 1223 01:02:42,740 --> 01:02:46,100 COLUNA 46: Por que você está passando por todos os bits? 1224 01:02:46,100 --> 01:02:49,310 ROB: Então, nós queremos passar por cada bit e - 1225 01:02:52,780 --> 01:02:55,100 Então, vamos dizer que temos algum número. 1226 01:02:55,100 --> 01:02:56,195 ALI: 68. 1227 01:02:56,195 --> 01:02:57,470 ROB: Podemos usar 68. 1228 01:02:57,470 --> 01:03:00,450 Assim, o binário vai ser 100100. 1229 01:03:00,450 --> 01:03:05,540 Portanto, esta é dentro de i, e queremos passar por cima de cada um desses bits. 1230 01:03:05,540 --> 01:03:06,450 É um 1? 1231 01:03:06,450 --> 01:03:07,320 Imprimir 1. 1232 01:03:07,320 --> 01:03:08,120 É um 0? 1233 01:03:08,120 --> 01:03:09,100 Imprimir 0. 1234 01:03:09,100 --> 01:03:10,530 Então vamos para a próxima. 1235 01:03:10,530 --> 01:03:11,210 É um 1? 1236 01:03:11,210 --> 01:03:11,610 Imprimir 1. 1237 01:03:11,610 --> 01:03:11,830 É um 0? 1238 01:03:11,830 --> 01:03:13,080 Imprimir 0. 1239 01:03:14,880 --> 01:03:16,710 ALI: Cool, ok. 1240 01:03:16,710 --> 01:03:22,880 Agora estamos no índice correto para onde é que pouco. 1241 01:03:25,380 --> 01:03:28,080 Como podemos verificar que uma específica? 1242 01:03:28,080 --> 01:03:33,130 Vamos dizer que estamos em j = 0, por isso queremos verificar o índice 0 do bit. 1243 01:03:33,130 --> 01:03:37,980 Assim, neste caso, esta. 1244 01:03:37,980 --> 01:03:41,930 >> Então agora como é que vamos verificar - oh, seria este. 1245 01:03:41,930 --> 01:03:42,810 ROB: Yeah. 1246 01:03:42,810 --> 01:03:44,310 ALI: Desculpe. 1247 01:03:44,310 --> 01:03:47,930 Como poderíamos ir sobre a verificação de que um, em um sentido? 1248 01:03:47,930 --> 01:03:52,030 Como podemos verificar se é um 0 ou um 1? 1249 01:03:52,030 --> 01:03:52,730 Bem vamos - 1250 01:03:52,730 --> 01:03:53,940 CLASSE: E 1? 1251 01:03:53,940 --> 01:03:54,390 ALI: E? 1252 01:03:54,390 --> 01:03:55,010 Sim. 1253 01:03:55,010 --> 01:03:57,810 ROB: Então, vamos dizer que já temos um. 1254 01:03:57,810 --> 01:04:02,470 Em seguida, este e, este voltará se era um 1 ou um 0. 1255 01:04:05,580 --> 01:04:08,200 ALI: Então podemos ir para baixo. 1256 01:04:08,200 --> 01:04:10,695 E nós podemos fazer como vocês disseram, de fazer o & função. 1257 01:04:13,810 --> 01:04:15,560 ROB: int - 1258 01:04:15,560 --> 01:04:18,290 como é que eu quero dizer isso - 1259 01:04:18,290 --> 01:04:24,250 Isone = i. 1260 01:04:24,250 --> 01:04:29,770 E para o primeiro bit que estejamos olhando, estamos fazendo i & 1. 1261 01:04:29,770 --> 01:04:33,302 Agora o que vamos querer e por pouco para o segundo? 1262 01:04:33,302 --> 01:04:34,294 COLUNA 47: 2. 1263 01:04:34,294 --> 01:04:36,110 ROB: Sim, o segundo que estamos no 2. 1264 01:04:36,110 --> 01:04:39,100 ALI: Você vai perceber que o 1 foi transferido para a esquerda. 1265 01:04:39,100 --> 01:04:44,320 Então, nós aprendemos todos os operadores bit a bit para fazer essa função? 1266 01:04:44,320 --> 01:04:45,160 ROB: O próximo - 1267 01:04:45,160 --> 01:04:46,280 ALI: Sim, certo, exatamente. 1268 01:04:46,280 --> 01:04:48,670 Portanto, é um desvio para a esquerda. 1269 01:04:48,670 --> 01:04:51,120 Em vez de sempre verificar com um, vamos mudar isso. 1270 01:04:51,120 --> 01:04:53,470 E quantas vezes é que vamos mudar isso? 1271 01:04:53,470 --> 01:04:59,340 Se estamos verificando a um 0, então nós estamos indo para movê-lo sobre zero. 1272 01:04:59,340 --> 01:04:59,975 Sim, exatamente. 1273 01:04:59,975 --> 01:05:02,090 Então você deixou transferi-lo por j. 1274 01:05:02,090 --> 01:05:02,550 Perfeito. 1275 01:05:02,550 --> 01:05:03,550 Portanto, agora sabemos - 1276 01:05:03,550 --> 01:05:06,450 temos esta int se é um, e então - 1277 01:05:10,690 --> 01:05:14,670 assim tipo de Rob de trapaça aqui - 1278 01:05:14,670 --> 01:05:18,090 e agora ele estava indo em frente e que ele está apenas dizendo que se ele realmente é 1, 1279 01:05:18,090 --> 01:05:23,540 porque um avalia a verdade, por isso não tenho que dizer isf Isone é igual a 1 - 1280 01:05:23,540 --> 01:05:29,210 por isso, se Isone, imprimimos um, e caso contrário, imprimir 0. 1281 01:05:29,210 --> 01:05:33,350 >> ROB: Então o nosso programa tem um bug geral. 1282 01:05:33,350 --> 01:05:35,845 Bem, perguntas sobre isso primeiro. 1283 01:05:35,845 --> 01:05:41,692 COLUNA 48: Será que você consegue colocar o Isone dentro da parte de operação de quatro e 1284 01:05:41,692 --> 01:05:47,804 depois tê-lo mudar-se como a última parte? 1285 01:05:47,804 --> 01:05:50,050 Assim Isone é igual a 1 e, em seguida, - 1286 01:05:50,050 --> 01:05:53,140 ROB: Sim, você pode. 1287 01:05:53,140 --> 01:05:57,200 Nós podemos realmente mostrar que uma vez que corrigir o erro que eu estou a ponto de 1288 01:05:57,200 --> 01:06:00,050 discutir com todos vocês. 1289 01:06:00,050 --> 01:06:03,470 Observe a ordem vamos sobre as coisas. 1290 01:06:03,470 --> 01:06:10,570 Dada esta representação binária, estamos começando com o bit 0. 1291 01:06:10,570 --> 01:06:13,010 Se for um 0, então estamos imprimindo - 1292 01:06:13,010 --> 01:06:15,620 bem, é um 0, por isso estamos imprimindo 0. 1293 01:06:15,620 --> 01:06:16,860 Então vamos para o segundo bit. 1294 01:06:16,860 --> 01:06:19,100 Ele é um 0, então imprimir 0. 1295 01:06:19,100 --> 01:06:20,290 Então vamos para o terceiro bit. 1296 01:06:20,290 --> 01:06:22,950 Ele é um 1, então imprimir 1. 1297 01:06:22,950 --> 01:06:24,580 ALI: Então vai para trás. 1298 01:06:24,580 --> 01:06:27,906 Então, como é que vocês sugerem que corrigir isso e ir por outro caminho? 1299 01:06:27,906 --> 01:06:28,900 COLUNA 49: [inaudível] 1300 01:06:28,900 --> 01:06:29,490 ROB: Yeah. 1301 01:06:29,490 --> 01:06:34,500 Então, em vez de ir de 0 a numBits, vamos a partir de pedaços numBits a 0. 1302 01:06:34,500 --> 01:06:35,600 ALI: Então [inaudível] 1303 01:06:35,600 --> 01:06:36,940 sempre pode ir por outro caminho. 1304 01:06:36,940 --> 01:06:38,970 ROB: NumBits menos 1, porque essa é a última nubmer - 1305 01:06:38,970 --> 01:06:41,160 ALI: Porque ele vai de 0 a 31. 1306 01:06:41,160 --> 01:06:44,420 E então nós vamos sempre ter certeza de que ele é maior do que 0, assim você não vai 1307 01:06:44,420 --> 01:06:46,100 muito longe para a direita. 1308 01:06:46,100 --> 01:06:48,800 E então você sempre subtrair 1 para ir para a direita. 1309 01:06:48,800 --> 01:06:52,240 >> ROB: Então agora nós temos um ciclo inverso, eo número é de volta para impressão 1310 01:06:52,240 --> 01:06:53,586 de forma correta. 1311 01:06:53,586 --> 01:06:57,560 COLUNA 50: Você não tem que mudar a coisa mudança também? 1312 01:06:57,560 --> 01:06:58,810 ALI: Então, não. 1313 01:07:03,810 --> 01:07:06,470 ROB: Estamos fazendo as mesmas operações exatas, só que agora 1314 01:07:06,470 --> 01:07:07,470 na ordem inversa. 1315 01:07:07,470 --> 01:07:14,170 Então, ao invés de fazer a mudança por numBits menos 1 para obter o que quer que isso 1316 01:07:14,170 --> 01:07:17,430 bit é, em vez de fazer esse último, vamos fazê-lo primeiro. 1317 01:07:19,970 --> 01:07:22,970 Ao inverter isto aqui, nós inverter a ordem de tudo 1318 01:07:22,970 --> 01:07:24,190 o que acontece lá dentro. 1319 01:07:24,190 --> 01:07:28,610 Mas nós não queremos mudar o que acontece dentro de todo. 1320 01:07:28,610 --> 01:07:29,860 ALI: Será que faz sentido? 1321 01:07:32,240 --> 01:07:33,660 Processamento? 1322 01:07:33,660 --> 01:07:41,200 Ok, então se alguém tiver quaisquer outras questões conceituais? 1323 01:07:41,200 --> 01:07:45,030 ALI: Antes de ir para seu ponto que é - 1324 01:07:45,030 --> 01:07:46,280 ALI: Tudo bem, bem ir. 1325 01:07:48,350 --> 01:07:53,160 Rob: Em vez de usar j para ser nosso - 1326 01:07:55,780 --> 01:08:00,550 em vez de usar j para sempre mudar por, como um j desvio à esquerda, eu acho que o que 1327 01:08:00,550 --> 01:08:04,120 você está dizendo é como, para j usar em si. 1328 01:08:04,120 --> 01:08:09,560 Assim, para j - 1329 01:08:09,560 --> 01:08:14,656 Eu acho que essa é a dura - j = 1 << 31. 1330 01:08:14,656 --> 01:08:16,200 É isso o que eu quero? 1331 01:08:16,200 --> 01:08:18,470 Eu acho que é << 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 agora em vez de usar - 1335 01:08:35,620 --> 01:08:38,370 ALI: Você está constantemente em movimento j em vez de ter um 1336 01:08:38,370 --> 01:08:40,520 índice para verificar isso. 1337 01:08:40,520 --> 01:08:42,130 Não é tão ruim assim. 1338 01:08:42,130 --> 01:08:43,960 Estamos usando um tipo similar de lógica. 1339 01:08:43,960 --> 01:08:46,202 Então, se você voltar - 1340 01:08:46,202 --> 01:08:50,020 oh, mas vai perdê-lo. 1341 01:08:50,020 --> 01:08:51,380 Ok, você está indo só para digitá-lo novamente. 1342 01:08:51,380 --> 01:08:56,880 Se você perceber que temos uma quantidade j << vezes, e nós estávamos 1343 01:08:56,880 --> 01:09:02,279 j incrementando cada vez em um incremento, mas desta vez em vez 1344 01:09:02,279 --> 01:09:06,010 eles estão fazendo o incremento de j no topo dentro do loop for. 1345 01:09:06,010 --> 01:09:10,890 Então, ao invés de sempre se movendo para baixo - 1346 01:09:10,890 --> 01:09:15,220 ROB: A primeira iteração do loop for, temos j é 10000. 1347 01:09:15,220 --> 01:09:20,000 A próxima iteração do loop é 01000. 1348 01:09:20,000 --> 01:09:22,380 A próxima iteração é isso. 1349 01:09:22,380 --> 01:09:26,800 E o 1 está indo só para manter propagação para baixo até que chegamos ao muito 1350 01:09:26,800 --> 01:09:29,729 final, onde agora é isso. 1351 01:09:29,729 --> 01:09:33,990 O próximo, o 1 que vai ser empurrado para fora, e j não é mais maior 1352 01:09:33,990 --> 01:09:35,090 que ou igual a 1. 1353 01:09:35,090 --> 01:09:38,380 Eu também poderia colocar maior que 0 diferença, mesmo. 1354 01:09:38,380 --> 01:09:41,580 E então é isso. 1355 01:09:41,580 --> 01:09:43,720 Perguntas? 1356 01:09:43,720 --> 01:09:44,760 Sim. 1357 01:09:44,760 --> 01:09:49,740 >> COLUNA 51: [inaudível] 1358 01:09:49,740 --> 01:09:51,729 ROB: Então, isso é o mesmo que - 1359 01:09:51,729 --> 01:09:57,270 você já viu j + = 3? 1360 01:09:57,270 --> 01:10:00,960 Portanto, este é o mesmo que j = j + 3? 1361 01:10:00,960 --> 01:10:05,560 Você pode fazer isso para praticamente qualquer operador no C. Então j >> = 3 é 1362 01:10:05,560 --> 01:10:10,490 igual a j = j >> 3. 1363 01:10:13,980 --> 01:10:16,760 Assim que funciona também com operadores bit a bit. 1364 01:10:16,760 --> 01:10:19,630 E eu não deveria ter colocado 31 aqui. 1365 01:10:19,630 --> 01:10:23,790 Eu deveria ter colocado numBits - 1. 1366 01:10:23,790 --> 01:10:25,380 ALI: Yay, não há números mágicos. 1367 01:10:25,380 --> 01:10:29,070 Ok, é 4:00, porém, assim se vocês têm que ir - mas isso faz sentido? 1368 01:10:29,070 --> 01:10:30,320 Vocês têm alguma pergunta? 1369 01:10:33,920 --> 01:10:38,470 ROB: Eu também estava indo jogar em que se queria - 1370 01:10:38,470 --> 01:10:41,326 tem ele discutiu operador ternário em tudo? 1371 01:10:41,326 --> 01:10:42,730 ALI: Não. 1372 01:10:42,730 --> 01:10:45,090 Está tudo bem. 1373 01:10:45,090 --> 01:10:46,970 ROB: Então, você poderia olhar para ele para a próxima vez. 1374 01:10:51,030 --> 01:10:52,080 ALI: Ok, realmente? 1375 01:10:52,080 --> 01:10:53,150 Agora você está se exibindo. 1376 01:10:53,150 --> 01:10:54,210 Rob: Não, agora é - 1377 01:10:54,210 --> 01:11:00,490 isso é o que deixa as pessoas interessadas, e agora eles vão olhar para ele. 1378 01:11:00,490 --> 01:11:02,640 Então, agora, que faz a mesma coisa, em uma única etapa. 1379 01:11:05,150 --> 01:11:10,950 Então, primeiro verificar, é i & j 1? 1380 01:11:10,950 --> 01:11:12,530 É verdade? 1381 01:11:12,530 --> 01:11:17,000 Se assim for, imprima a 1, então, imprimir um 0. 1382 01:11:17,000 --> 01:11:19,190 ALI: Mas fazer isso de outra maneira é perfeitamente bem. 1383 01:11:19,190 --> 01:11:20,920 Tem a mesma lógica. 1384 01:11:20,920 --> 01:11:22,730 Então não é como é - 1385 01:11:22,730 --> 01:11:24,620 ROB: Neste ponto, podemos nos livrar dessas chaves, porque é só 1386 01:11:24,620 --> 01:11:27,190 uma linha de loop. 1387 01:11:27,190 --> 01:11:29,370 ALI: Ok, então isso faz sentido? 1388 01:11:29,370 --> 01:11:30,370 Que era uma espécie de salto. 1389 01:11:30,370 --> 01:11:34,870 Mas era apenas uma espécie de sintaxe, mais assim. 1390 01:11:34,870 --> 01:11:36,250 >> Cool? 1391 01:11:36,250 --> 01:11:37,500 Alguma outra pergunta? 1392 01:11:40,880 --> 01:11:41,570 ROB: Tudo bem. 1393 01:11:41,570 --> 01:11:42,310 ALI: Tudo bem, legal. 1394 01:11:42,310 --> 01:11:43,560 Obrigado por ter vindo à secção.