1 00:00:01,984 --> 00:00:07,450 [Powered by Google Translate] [Electronic STATISKE LYDE] 2 00:00:07,450 --> 00:00:11,320 ROB: Okay, så hvad vi lige bragt dig til, er CS50 Spaces. 3 00:00:11,320 --> 00:00:12,325 ALI: Vent, vent op igen. 4 00:00:12,325 --> 00:00:13,175 Velkommen til afsnit! 5 00:00:13,175 --> 00:00:13,860 ROB: Velkommen til afsnit! 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: Jeg er Ali og dette er Rob. 9 00:00:18,610 --> 00:00:20,680 Okay, nu vil vi forklare Spaces. 10 00:00:20,680 --> 00:00:23,650 ROB: Så hvad vi lige bragt dig til, er CS50 Spaces. 11 00:00:23,650 --> 00:00:29,260 Du kommer til at bruge dette en masse i dine afsnit i dette semester. 12 00:00:29,260 --> 00:00:32,110 Dybest set, har vi allerede haft du henter apparatet. 13 00:00:32,110 --> 00:00:38,630 Og du kan tænke på CS50 rum som et webinterface taler til et apparat 14 00:00:38,630 --> 00:00:40,670 at vi har på nogle server et eller andet sted. 15 00:00:40,670 --> 00:00:42,990 Så du kan køre din kode i denne grænseflade, og vi vil 16 00:00:42,990 --> 00:00:44,180 se, hvordan man gør tingene. 17 00:00:44,180 --> 00:00:48,200 Du kan også se på koden for andre mennesker i afsnittet, og - 18 00:00:48,200 --> 00:00:51,920 ALI: Og som nogle mennesker har fundet ud af, kan du chatte folk på siden. 19 00:00:51,920 --> 00:00:54,230 Og vi vil alle se det, også, så det er spændende. 20 00:00:54,230 --> 00:00:55,655 Kom ind, kom og sidde. 21 00:00:55,655 --> 00:00:57,060 Tag plads. 22 00:00:57,060 --> 00:00:57,840 >> ROB: Så sektioner er - 23 00:00:57,840 --> 00:00:59,380 ALI: Nej, nej, kan du fyre komme. 24 00:00:59,380 --> 00:01:03,356 ROB: Sektioner vil være langt mere interaktiv dette semester. 25 00:01:03,356 --> 00:01:04,180 ALI: Åh, han er ligesom - 26 00:01:04,180 --> 00:01:05,840 Oh. 27 00:01:05,840 --> 00:01:07,530 Okay, cool. 28 00:01:07,530 --> 00:01:15,630 Så hvis du fyre bare kommer ind, kan du gå til dette link, hvis jeg kan få 29 00:01:15,630 --> 00:01:20,190 der, lige der. 30 00:01:20,190 --> 00:01:22,780 Vi kan ikke rigtig skrive det, fordi der ikke er plads på printkortet, men dette link 31 00:01:22,780 --> 00:01:27,160 lige her, gå til det på dine computere, og du vil indtaste CS50 32 00:01:27,160 --> 00:01:29,810 Spaces, som er en temmelig cool ting. 33 00:01:32,460 --> 00:01:33,830 Okay. 34 00:01:33,830 --> 00:01:35,370 Har du et problem? 35 00:01:35,370 --> 00:01:39,930 ROB: Så du kan finde de problemer - 36 00:01:39,930 --> 00:01:42,720 skal vi være i stand til at skrive dette sted. 37 00:01:42,720 --> 00:01:50,040 Så hvis du går til cs50.net/psets og dette er den hacker supersection - 38 00:01:50,040 --> 00:01:55,870 og du går ind i Hacker Edition Pset en, se på specifikationen 39 00:01:55,870 --> 00:01:57,620 et eller andet sted ned på side - 40 00:02:01,940 --> 00:02:04,280 >> ALI: Så dybest set, mens Rob ser, hvad vi vil gøre i 41 00:02:04,280 --> 00:02:06,650 sektion i dag er der er et afsnit af problemer - 42 00:02:06,650 --> 00:02:07,600 ROB: - på side otte. 43 00:02:07,600 --> 00:02:09,300 ALI: - kaldet en del af problemer - 44 00:02:09,300 --> 00:02:10,280 ROB: Afsnit af spørgsmål. 45 00:02:10,280 --> 00:02:11,630 ALI: Beklager, et afsnit med spørgsmål. 46 00:02:11,630 --> 00:02:14,450 Og dem er, hvad vi kommer til at gå over - 47 00:02:14,450 --> 00:02:16,370 de er hvad vi kommer til at gå over i dag i snit. 48 00:02:16,370 --> 00:02:20,010 Og vi vil kode det på CS50 Spaces, og det vil forhåbentlig virke. 49 00:02:20,010 --> 00:02:22,210 Og vi kan bare snakke igennem dem. 50 00:02:22,210 --> 00:02:24,510 Og du fyre kan stille spørgsmål, når du føler - 51 00:02:24,510 --> 00:02:27,890 >> ROB: Så det bliver at være en fælles ting med de fleste psets. 52 00:02:27,890 --> 00:02:31,000 Jeg tænker med denne ene, det siger du ikke behøver at udlevere disse spørgsmål i. 53 00:02:31,000 --> 00:02:36,780 Men ideen er, at disse spørgsmål er sat på Pset, og du kan komme 54 00:02:36,780 --> 00:02:39,790 til afsnit til at få disse spørgsmål besvaret. 55 00:02:39,790 --> 00:02:42,730 Eller hvis du ikke kommer til sektion, kan du besvare dem på egen hånd eller få 56 00:02:42,730 --> 00:02:44,250 hjælpe på kontortid eller noget. 57 00:02:44,250 --> 00:02:47,540 Men det er spørgsmål, som formodes at prep dig for problemet sæt. 58 00:02:47,540 --> 00:02:50,910 Og på hacker udgave, kan mange af de spørgsmål netop stå 59 00:02:50,910 --> 00:02:54,170 udvide din nuværende CS viden. 60 00:02:54,170 --> 00:02:55,370 ALI: Jep, temmelig meget. 61 00:02:55,370 --> 00:02:57,950 >> Okay, så er alle på CS50 Spaces? 62 00:02:57,950 --> 00:02:59,457 Hej, kom ind 63 00:02:59,457 --> 00:03:00,828 SPEAKER 1: Kan vi se den URL én gang til? 64 00:03:04,030 --> 00:03:07,000 Rob: Yeah, vil dette være nemmere, når du er faktisk i dine afsnit, og 65 00:03:07,000 --> 00:03:10,760 Deres TF kan bare e-maile dig webadressen på forhånd. 66 00:03:10,760 --> 00:03:11,870 ALI: Yay, tage plads. 67 00:03:11,870 --> 00:03:13,170 Der er plads her. 68 00:03:13,170 --> 00:03:14,420 Fronten er ikke så slemt. 69 00:03:17,112 --> 00:03:18,362 Hvad? 70 00:03:20,650 --> 00:03:23,590 Så CS50 Spaces, vi får der. 71 00:03:23,590 --> 00:03:26,760 Er der nogen der har nogen spørgsmål, før vi kommer ind - hvad? 72 00:03:26,760 --> 00:03:28,060 ROB: Der er ikke engang nogen kridt. 73 00:03:28,060 --> 00:03:29,270 [Uhørlig] 74 00:03:29,270 --> 00:03:31,540 ALI: Undskyld. 75 00:03:31,540 --> 00:03:32,950 Du kan bruge dine negle? 76 00:03:32,950 --> 00:03:38,210 Vi er i en meget low-tech plads til en meget high-tech klasse. 77 00:03:38,210 --> 00:03:40,795 Okay, er alle slags god? 78 00:03:40,795 --> 00:03:44,310 Er der nogen der har stadig spørgsmål om det? 79 00:03:44,310 --> 00:03:48,540 Som jeg sagde før, vi kommer til at gå igennem den del af spørgsmålene i 80 00:03:48,540 --> 00:03:51,340 de Pset specifikationer. 81 00:03:51,340 --> 00:03:53,490 Så der er bare et par problemer, som vi kommer til at 82 00:03:53,490 --> 00:03:57,490 kode op i CS50 Spaces. 83 00:03:57,490 --> 00:03:58,740 Er alle godt? 84 00:04:01,010 --> 00:04:01,360 Okay. 85 00:04:01,360 --> 00:04:02,312 Godt? 86 00:04:02,312 --> 00:04:04,260 ROB: Har du en bærbar computer? 87 00:04:04,260 --> 00:04:05,150 ALI: Du kan hænge ud med Lucas. 88 00:04:05,150 --> 00:04:06,960 Han sidder lige ved siden af ​​dig. 89 00:04:06,960 --> 00:04:10,030 Limning tid. 90 00:04:10,030 --> 00:04:10,990 >> ROB: Så starte med det første problem? 91 00:04:10,990 --> 00:04:11,260 ALI: Yeah. 92 00:04:11,260 --> 00:04:11,820 Vi kan begynde. 93 00:04:11,820 --> 00:04:12,390 Vil du have mig - 94 00:04:12,390 --> 00:04:13,700 Jeg kan gå. 95 00:04:13,700 --> 00:04:16,666 Så vil vi gå til Pset specs. 96 00:04:16,666 --> 00:04:17,640 Åh, hvorfor er det - 97 00:04:17,640 --> 00:04:18,890 ROB: Control. 98 00:04:21,769 --> 00:04:25,770 ALI: Okay, så skal vi ind i svaret disse ting så godt? 99 00:04:25,770 --> 00:04:26,190 ROB: Oh, yeah. 100 00:04:26,190 --> 00:04:27,280 Så - 101 00:04:27,280 --> 00:04:29,675 ALI: Åh, gjorde alle watch Robs hovedrollen shorts? 102 00:04:32,430 --> 00:04:33,360 Okay, cool. 103 00:04:33,360 --> 00:04:36,870 ROB: Ja, jeg tror ikke, vi nødvendigvis forventes at du har 104 00:04:36,870 --> 00:04:40,650 set den før kommer til dette afsnit, men vi kan diskutere dem 105 00:04:40,650 --> 00:04:43,870 problemer på forhånd, da de er i den afdeling i spørgsmål ting. 106 00:04:43,870 --> 00:04:46,480 Så hvis du ikke har set det, så fortvivl ikke. 107 00:04:46,480 --> 00:04:48,630 De, der har, kan forsøge at besvare. 108 00:04:48,630 --> 00:04:53,875 >> Så det første spørgsmål, hvad der er en pre-processor, hvordan # include 109 00:04:53,875 --> 00:04:56,080 vedrøre? 110 00:04:56,080 --> 00:04:58,440 Så er der nogen har svaret til det? 111 00:04:58,440 --> 00:04:59,320 Ali: I fyre kan snakke det ud. 112 00:04:59,320 --> 00:05:00,308 Sure, gå videre. 113 00:05:00,308 --> 00:05:03,766 SPEAKER 2: # include er nogle præ-skrevet kode, og i stedet for 114 00:05:03,766 --> 00:05:08,706 kopiere det og indsætte det i din program, indsætte det ved bare at sige, 115 00:05:08,706 --> 00:05:14,140 den pre-processoren ved, at det er der, og at det bør tilføje det i 116 00:05:14,140 --> 00:05:17,520 senere, eller før noget andet sker. 117 00:05:17,520 --> 00:05:18,466 ALI: Ja, awesome. 118 00:05:18,466 --> 00:05:19,440 Cool. 119 00:05:19,440 --> 00:05:23,820 ROB: Så når du faktisk kompilere et program, pre-processoren er dette 120 00:05:23,820 --> 00:05:25,230 første skridt. 121 00:05:25,230 --> 00:05:27,620 Compilation sker i fire store skridt. 122 00:05:27,620 --> 00:05:31,120 Så den pre-processoren er den første store sag, og det er den her fyr, der går 123 00:05:31,120 --> 00:05:33,510 igennem og ser for alle disse hash symboler. 124 00:05:33,510 --> 00:05:36,610 Og enhver linje, der begynder med en hash, før processoren ser på det og ser 125 00:05:36,610 --> 00:05:37,880 hvis det understøtter den. 126 00:05:37,880 --> 00:05:43,800 Så # include fortæller pre-processoren at søge efter en cs50.h 127 00:05:43,800 --> 00:05:47,830 fil og blot kopiere og indsætte dens indhold i denne fil. 128 00:05:47,830 --> 00:05:50,970 Så du kan virkelig # include noget, du ønsker, men det er mest kommer til at være 129 00:05:50,970 --> 00:05:53,700 . H-filer. 130 00:05:53,700 --> 00:05:55,820 Vi har ikke fået at # define endnu, så det gør ikke noget. 131 00:05:55,820 --> 00:05:57,620 ALI: Ja, vi er godt på det ene. 132 00:05:57,620 --> 00:05:59,450 Er der nogen der har nogen spørgsmål om det? 133 00:05:59,450 --> 00:06:01,090 Er vi gode? 134 00:06:01,090 --> 00:06:02,430 Næste spørgsmål. 135 00:06:02,430 --> 00:06:07,096 >> SPEAKER 3: På kort, var der noget om c så godt.? 136 00:06:07,096 --> 00:06:09,110 Er det relevant eller er det irrelevant? 137 00:06:09,110 --> 00:06:11,210 ROB: Om c med den pre-processoren.? 138 00:06:11,210 --> 00:06:13,990 SPEAKER 3: Ja, gjorde eller jeg lave noget op? 139 00:06:13,990 --> 00:06:18,290 ROB: Så det korte kunne have været vist før behandlingen af ​​denne fil og 140 00:06:18,290 --> 00:06:24,240 . udsende det til en anden C-fil, så du på forhånd kan behandle denne fil - 141 00:06:24,240 --> 00:06:30,000 når du bare køre som gør goddag eller klang hello.c, laver du alle 142 00:06:30,000 --> 00:06:31,730 udarbejdelse i ét stort skridt. 143 00:06:31,730 --> 00:06:34,780 Men du kan eksplicit gøre det i sine enkelte trin. 144 00:06:34,780 --> 00:06:36,950 Så først du på forhånd kan behandle den. 145 00:06:36,950 --> 00:06:42,260 Derefter kan du kompilere, så du kan samle, og så du kan linke. 146 00:06:42,260 --> 00:06:43,620 Vi vil komme til dem andre dem. 147 00:06:43,620 --> 00:06:47,410 Men forbehandling, du slags pre-proces den, og så den går i 148 00:06:47,410 --> 00:06:49,270 anden. c. fil. 149 00:06:49,270 --> 00:06:51,430 Fordi forbehandling ikke rigtig ændre noget. 150 00:06:51,430 --> 00:06:52,800 Det er bare en flok kopi og indsætte. 151 00:06:52,800 --> 00:06:56,760 Du kan manuelt kopiere og indsætte det selv. 152 00:06:56,760 --> 00:06:59,630 ALI:. Og for at være klar, c-filen er en C-fil, så det er 153 00:06:59,630 --> 00:07:00,930 skrevet i C-kode. 154 00:07:00,930 --> 00:07:03,300 Så det kommer fra C-kode til C-kode. 155 00:07:03,300 --> 00:07:05,210 Du er bare tilføje mere kode med pund. 156 00:07:05,210 --> 00:07:08,575 ROB: Når du forbehandles det, er det stadig en gyldig C-fil. 157 00:07:08,575 --> 00:07:09,940 SPEAKER 3: Okay. 158 00:07:09,940 --> 00:07:10,540 ALI: Godt spørgsmål. 159 00:07:10,540 --> 00:07:11,370 Jeg kan godt lide det. 160 00:07:11,370 --> 00:07:12,755 Okay, næste spørgsmål. 161 00:07:17,870 --> 00:07:19,660 >> Hvad er compiler? 162 00:07:19,660 --> 00:07:20,824 Anyone? 163 00:07:20,824 --> 00:07:21,286 Ja. 164 00:07:21,286 --> 00:07:24,650 SPEAKER 4: Det ændrer den præ-forarbejdede kode i montage. 165 00:07:24,650 --> 00:07:25,110 ALI: Perfect. 166 00:07:25,110 --> 00:07:25,390 ROB: Ja. 167 00:07:25,390 --> 00:07:25,720 ALI: Cool. 168 00:07:25,720 --> 00:07:28,270 ROB: Så det er hvad compileren gør specifikt 169 00:07:28,270 --> 00:07:30,740 når vi bruger Dunk. 170 00:07:30,740 --> 00:07:35,100 I en meget generel forstand, er en compiler ligesom at tage kode på ét sprog 171 00:07:35,100 --> 00:07:37,070 og gøre det til et andet sprog. 172 00:07:37,070 --> 00:07:38,370 Så i C - 173 00:07:38,370 --> 00:07:43,750 eller, ja, er Dunk tager kode, der er i C og omdanne det til samlingen. 174 00:07:43,750 --> 00:07:46,560 Og du behøver ikke at være i stand til at forstå forsamlingen på alle. 175 00:07:46,560 --> 00:07:49,830 Men det er det sprog, det er at gøre det til. 176 00:07:49,830 --> 00:07:50,230 >> ALI: Okay. 177 00:07:50,230 --> 00:07:52,920 Og så, hvad er en assembler? 178 00:07:52,920 --> 00:07:54,270 Anyone? 179 00:07:54,270 --> 00:07:56,810 SPEAKER 5: [uhørlig] til binær? 180 00:07:56,810 --> 00:07:57,260 ALI: Undskyld, hvad? 181 00:07:57,260 --> 00:07:58,760 SPEAKER 5: [uhørlig] til binær? 182 00:07:58,760 --> 00:07:59,260 ROB: Yep. 183 00:07:59,260 --> 00:07:59,880 ALI: Ja. 184 00:07:59,880 --> 00:08:01,960 ROB: Så assembler - 185 00:08:01,960 --> 00:08:05,830 montage kode er virkelig, virkelig tæt på, hvad din computer kan forstå, 186 00:08:05,830 --> 00:08:09,390 men husk, at det ikke helt forstå teksten 187 00:08:09,390 --> 00:08:10,630 det er samling kode. 188 00:08:10,630 --> 00:08:14,570 Du er nødt til at konvertere det til lige 1s og 0'erne. 189 00:08:14,570 --> 00:08:17,000 Det er ligesom en direkte oversættelse proces. 190 00:08:17,000 --> 00:08:19,450 Vi kunne bare give dig en tabel, der kort hvad hver 191 00:08:19,450 --> 00:08:21,880 samlevejledning betyder. 192 00:08:21,880 --> 00:08:24,340 Men assembler er bare gør denne oversættelse for dig. 193 00:08:24,340 --> 00:08:28,790 Det er at omdanne samling koden i 1s og 0'erne. 194 00:08:28,790 --> 00:08:30,870 >> ALI: Og så, for det sidste, hvad er en linker? 195 00:08:30,870 --> 00:08:35,070 Og hvordan-lcs50 vedrører? 196 00:08:35,070 --> 00:08:37,010 Anyone? 197 00:08:37,010 --> 00:08:41,440 ROB: Dette er den sværeste og mindst forklarede en i compiler video. 198 00:08:41,440 --> 00:08:48,980 ALI: Er der nogen huske at se-lcs50 i en kommando? 199 00:08:48,980 --> 00:08:50,690 SPEAKER 6: Når du gik til gøre. 200 00:08:50,690 --> 00:08:51,980 ALI: Det er i make. 201 00:08:51,980 --> 00:08:55,780 Ja, cool, okay. 202 00:08:55,780 --> 00:09:02,024 Er der nogen gætter eller vage - ja, gå. 203 00:09:02,024 --> 00:09:06,370 SPEAKER 7: Jeg er ikke sikker, fordi dit kort var virkelig [uhørlig], men var det 204 00:09:06,370 --> 00:09:12,244 noget om at gøre separate filer med hvert bibliotek og derefter sætte 205 00:09:12,244 --> 00:09:13,620 dem alle sammen i én bibliotek? 206 00:09:13,620 --> 00:09:14,400 ROB: Ja. 207 00:09:14,400 --> 00:09:23,000 Så når du har hello.c, det er en virkelig simpelt program. 208 00:09:23,000 --> 00:09:25,570 Du er virkelig kun gøre én ting i det. 209 00:09:25,570 --> 00:09:27,400 Men når du kommer ind i andre programmer - 210 00:09:27,400 --> 00:09:31,700 og jeg gætte, selv når du GetString i dine programmer, skal du starte 211 00:09:31,700 --> 00:09:33,830 herunder andre filer. 212 00:09:33,830 --> 00:09:38,000 Så CS50 biblioteket er en sådan fil, hvor vi har de implementeringer 213 00:09:38,000 --> 00:09:40,750 af GetString og GetInt og alle disse ting. 214 00:09:40,750 --> 00:09:45,540 Så hvad linkeren gør, er det går rundt og leder gennem alle disse 215 00:09:45,540 --> 00:09:49,400 filer, se hvor funktioner er defineret, og sørg for, at når jeg kalder 216 00:09:49,400 --> 00:09:52,440 GetString et eller andet sted, det ved, at GetString betyder, at det er den 217 00:09:52,440 --> 00:09:54,910 GetString over i CS50 biblioteket. 218 00:09:54,910 --> 00:09:58,895 Så linker bare tager alle disse filer, smadrer dem sammen, og nu 219 00:09:58,895 --> 00:10:01,020 du har en eksekverbar. 220 00:10:01,020 --> 00:10:05,600 Så husk, hvis du bruger CS50 bibliotek, du har brug for både 221 00:10:05,600 --> 00:10:10,370 # Include i toppen, og derefter også i din make kommando, som du 222 00:10:10,370 --> 00:10:12,630 sagde, du skal have den-lcs50. 223 00:10:12,630 --> 00:10:15,720 Så du kan ikke bare have en. 224 00:10:15,720 --> 00:10:18,294 Så det er bare noget at huske på til fremtidig brug. 225 00:10:18,294 --> 00:10:22,550 >> SPEAKER 8: Så lad os sige, at der var et andet bibliotek, ligesom cs51.h, ville vi 226 00:10:22,550 --> 00:10:26,780 også nødt til at tilføje-lcs51? 227 00:10:26,780 --> 00:10:32,390 ROB: Den eneste grund til dette-lcs50 virker perfekt, er fordi vi har dette sæt 228 00:10:32,390 --> 00:10:35,800 op på et bestemt sted i dine apparater, så de ved, hvad 229 00:10:35,800 --> 00:10:38,550 -Lcs50 midler. 230 00:10:38,550 --> 00:10:43,240 Vi kunne bare give dig en cs50.c fil, og så kunne du kompilere det, siger 231 00:10:43,240 --> 00:10:49,050 Klang hello.c cs50.c, og så ville det gøre din eksekverbare ved at sætte 232 00:10:49,050 --> 00:10:50,350 disse to filer sammen. 233 00:10:50,350 --> 00:10:56,520 Det ved, at-lcs50 betyder cs50.c over i en mappe, som vi angivet i 234 00:10:56,520 --> 00:10:58,350 dine apparater. 235 00:10:58,350 --> 00:11:04,290 Så hvis du ønsker en cs51.c at være kan fastsættes ved bare at sige-lcs51, 236 00:11:04,290 --> 00:11:06,760 så ville vi også nødt til at sætte det i denne mappe, så det ved hvorfra det 237 00:11:06,760 --> 00:11:08,636 lede efter den. 238 00:11:08,636 --> 00:11:10,510 ALI: Hvad var dit spørgsmål? 239 00:11:10,510 --> 00:11:13,975 >> SPEAKER 7: Hvorfor har du til at knytte CS50 240 00:11:13,975 --> 00:11:18,940 hvis - wasn't det kopiere / indsat på det første trin, når du på forhånd behandles det? 241 00:11:18,940 --> 00:11:19,700 ALI: Vil du tage den? 242 00:11:19,700 --> 00:11:20,880 ROB: Sure. 243 00:11:20,880 --> 00:11:28,028 Så cs50.h fil er adskilt fra cs50.c C-fil. 244 00:11:28,028 --> 00:11:33,652 Har du fået at fungere prototyper i klassen? 245 00:11:33,652 --> 00:11:34,350 Okay. 246 00:11:34,350 --> 00:11:40,255 Så dybest set er cs50.h filen bare at kopiere og indsætte - 247 00:11:40,255 --> 00:11:44,040 ALI: Har du fyre ved, hvad signaturer er? 248 00:11:44,040 --> 00:11:46,580 Okay, så temmelig meget, hvis man ser på - 249 00:11:46,580 --> 00:11:50,530 ROB: Lad os lade cs50.h er der ikke. 250 00:11:50,530 --> 00:11:52,960 Nu er denne fil - 251 00:11:52,960 --> 00:11:56,090 du laver streng s = GetString. 252 00:11:56,090 --> 00:11:59,350 Men når vi har fået til dette punkt i koden, det har ingen idé om, hvad 253 00:11:59,350 --> 00:12:00,230 GetString er. 254 00:12:00,230 --> 00:12:02,600 Det ved, det er en funktion, da du kalder det. 255 00:12:02,600 --> 00:12:06,500 Men det betyder ikke, at det faktisk er meningen at returnere en streng. 256 00:12:06,500 --> 00:12:14,530 Så som jeg sagde, string s = GetInt, betyder det ikke giver nogen mening, eftersom 257 00:12:14,530 --> 00:12:17,530 du tilmelder et heltal til en streng. 258 00:12:17,530 --> 00:12:22,270 Men det betyder ikke, at GetString giver mening, fordi den ikke 259 00:12:22,270 --> 00:12:24,380 vide, at GetString returnerer en streng. 260 00:12:24,380 --> 00:12:28,220 Så hvad cs50.h siger, er noget som dette. 261 00:12:33,070 --> 00:12:37,750 ALI: Så hvad Rob er at skrive er, det er et løfte på en måde, at det kommer til at 262 00:12:37,750 --> 00:12:41,280 har denne funktion kaldet GetString. 263 00:12:41,280 --> 00:12:45,250 ROB: Dette er alt, cs50.h er at kopiere og indsætte i her, samt 264 00:12:45,250 --> 00:12:47,620 som GetInt og alle disse ting. 265 00:12:47,620 --> 00:12:51,520 Og det bare siger, at GetString ikke returnere en streng. 266 00:12:51,520 --> 00:12:54,830 Du ved ikke, hvordan det er implementeret endnu, men når vi kommer til denne linje, nu 267 00:12:54,830 --> 00:12:57,760 det ved, at det korrekt returnerer en streng. 268 00:12:57,760 --> 00:13:03,022 >> SPEAKER 9: Så hvis vi ikke gider med # include ting og i stedet 269 00:13:03,022 --> 00:13:07,130 bare skrev prototypen for dem, at vi faktisk kommer til at bruge? 270 00:13:07,130 --> 00:13:07,330 ROB: Yeah. 271 00:13:07,330 --> 00:13:08,870 Så lad os køre dette. 272 00:13:08,870 --> 00:13:09,110 SPEAKER 9: Er det? 273 00:13:09,110 --> 00:13:13,670 Så som standard, ville det gøre det-l til CS50 bare fordi -. 274 00:13:13,670 --> 00:13:14,740 ROB: - udtryk. 275 00:13:14,740 --> 00:13:19,370 ALI: Ja, fordi, som du sagde, det er i make-filen. 276 00:13:19,370 --> 00:13:24,040 ROB: cs50.h også sker for at være typedef char * til strengen. 277 00:13:24,040 --> 00:13:26,950 Du kan helt ignorere, hvad det betyder for nu. 278 00:13:26,950 --> 00:13:31,430 Men det er også noget medtaget i cs50.h. 279 00:13:31,430 --> 00:13:34,230 Så nu tingene fungerede helt fint. 280 00:13:34,230 --> 00:13:40,770 Det kører nøjagtig det samme som det var, da vi bare havde 281 00:13:40,770 --> 00:13:45,120 # include. 282 00:13:45,120 --> 00:13:49,200 Og så herunder cs50.h sker med over-omfatter ting du har brug for - 283 00:13:49,200 --> 00:13:53,080 ligesom, behøver du ikke bruge GetInt i dette program, men det gør ikke noget. 284 00:13:53,080 --> 00:13:55,010 Det vil bare ignorere det. 285 00:13:55,010 --> 00:14:02,400 ALI: Og så når du gør det-lcs50 over her og lige her, hvad sker 286 00:14:02,400 --> 00:14:05,290 på, er, at det er at have den faktiske implementerbar kode. 287 00:14:05,290 --> 00:14:07,530 Så det er, hvor det egentlig er, gør det - 288 00:14:07,530 --> 00:14:09,090 skrive koden for GetString. 289 00:14:09,090 --> 00:14:11,180 Så det er ikke bare et løfte længere. 290 00:14:11,180 --> 00:14:16,520 Det er faktisk går igennem og tager snoren og alt det der. 291 00:14:16,520 --> 00:14:17,600 Give mening? 292 00:14:17,600 --> 00:14:22,640 Spørgsmål? Ok. 293 00:14:22,640 --> 00:14:24,466 Cool bønner. 294 00:14:24,466 --> 00:14:27,630 >> ROB: Nu kan vi gå videre til faktiske kode. 295 00:14:27,630 --> 00:14:28,780 ALI: Okay. 296 00:14:28,780 --> 00:14:33,340 Så her er det første problem. 297 00:14:33,340 --> 00:14:36,910 Så det siger skrive et program, der beder brugeren om et lille 298 00:14:36,910 --> 00:14:40,540 brev og derefter konverterer det til store bogstaver uden at bruge bitvis 299 00:14:40,540 --> 00:14:43,590 operationer, som pr prøve output nedenfor. 300 00:14:43,590 --> 00:14:48,780 Så du kan se, du kører programmet med. / A.out, og så er du 301 00:14:48,780 --> 00:14:53,320 vil sætte i små en, og så dit program bør give sin kapital 302 00:14:53,320 --> 00:15:00,590 A. Så hvorfor ikke jer alle give det et skud på CS50 Spaces? 303 00:15:00,590 --> 00:15:03,360 Så du fyre kan alle gå her. 304 00:15:03,360 --> 00:15:06,650 Og du kan slette al koden ind her. 305 00:15:06,650 --> 00:15:12,140 Og så kan du gå videre og begynde kodning af ting. 306 00:15:12,140 --> 00:15:14,590 ROB: Du vil sikkert gerne bruge getchar, det er 307 00:15:14,590 --> 00:15:16,190 inkluderet i CS50 biblioteket. 308 00:15:16,190 --> 00:15:18,770 ALI: Jeg tror det ville være bedre, hvis du gemmer den øverste del. 309 00:15:21,452 --> 00:15:23,805 Så du måske bare ønsker at ændre de ting i midten. 310 00:15:28,710 --> 00:15:29,070 Gå videre og arbejde. 311 00:15:29,070 --> 00:15:30,530 Du er velkommen til at arbejde med hinanden. 312 00:15:30,530 --> 00:15:32,360 Rob: Og du kan stille spørgsmål, hvis du har - 313 00:15:32,360 --> 00:15:33,450 >> SPEAKER 10: Hvad er en bitvis operation? 314 00:15:33,450 --> 00:15:35,100 ROB: Så ignorere, at på dette problem. 315 00:15:35,100 --> 00:15:36,330 ALI: Hvis du ikke kender det, det er godt. 316 00:15:36,330 --> 00:15:38,300 ROB: Vi kommer til at bruge det i næste problem. 317 00:15:38,300 --> 00:15:40,750 Men hvis du ikke ved hvad en bitvis operatør er, det er fint. 318 00:15:40,750 --> 00:15:43,575 SPEAKER 10: Er det som at vende det til ASCII-koden? 319 00:15:43,575 --> 00:15:44,050 ALI: Nej. 320 00:15:44,050 --> 00:15:44,750 ROB: Nej. 321 00:15:44,750 --> 00:15:46,220 Du kan gøre det for dette problem. 322 00:15:46,220 --> 00:15:48,280 SPEAKER 10: Hvordan gør du det? 323 00:15:48,280 --> 00:15:52,460 Så hvis bare jeg havde et sted at skrive - 324 00:15:52,460 --> 00:15:54,670 ALI: Eller noget at skrive med. 325 00:15:54,670 --> 00:15:56,780 ROB: Jeg kunne bare lidt type i dette. 326 00:15:56,780 --> 00:15:59,045 ALI: Type øverst. 327 00:15:59,045 --> 00:16:01,390 ROB: Åh, jeg sidder på en mikrofon. 328 00:16:01,390 --> 00:16:10,860 >> Så vi så i foredrag, at den ASCII værdien for kapital A er 65 år. 329 00:16:10,860 --> 00:16:13,670 Og kapital B vil være 66, og så videre. 330 00:16:13,670 --> 00:16:20,860 Så du kan bogstaveligt talt bruge 'A' til det antal 65. 331 00:16:20,860 --> 00:16:24,600 Lignende, er værdien 65. 332 00:16:24,600 --> 00:16:30,950 Jeg kan gøre noget lignende int x = 100 - 'A'. Og nu x vil have værdien 333 00:16:30,950 --> 00:16:33,810 100-65. 334 00:16:33,810 --> 00:16:36,708 ALI: Du kan køre det og vise det. 335 00:16:36,708 --> 00:16:38,420 Åh, måske ikke. 336 00:16:38,420 --> 00:16:38,600 Det gør ikke noget. 337 00:16:38,600 --> 00:16:40,970 ROB: Jeg var nødt til at udskrive det. 338 00:16:40,970 --> 00:16:43,730 SPEAKER 10: Hvordan du tænder den tilbage til karakter? 339 00:16:43,730 --> 00:16:46,800 ALI: Så hvis du lad være - 340 00:16:46,800 --> 00:16:51,450 du bare tvinge den til at være char A, lig. 341 00:16:51,450 --> 00:16:53,630 ROB: Så der er en - 342 00:16:53,630 --> 00:16:58,440 sondringen mellem en char og et heltal er bare med hensyn til størrelse. 343 00:16:58,440 --> 00:17:01,230 Så et heltal sker for at være i stand til at repræsentere ting op 344 00:17:01,230 --> 00:17:02,600 til, gerne, fire mia. 345 00:17:02,600 --> 00:17:05,839 En char er kun i stand til at repræsentere ting op til 255. 346 00:17:05,839 --> 00:17:08,390 Men der er ingen forskel på dem andet end dette. 347 00:17:08,390 --> 00:17:12,339 Så du kan sige char c = 65. 348 00:17:12,339 --> 00:17:24,204 Det svarer til at sige char c lig 'A'. 349 00:17:24,204 --> 00:17:25,210 ALI: Åh, nej. 350 00:17:25,210 --> 00:17:26,710 Det betyder faktisk ikke gemme ting. 351 00:17:26,710 --> 00:17:28,130 ROB: Nej, du kan ikke gøre det. 352 00:17:28,130 --> 00:17:31,610 ALI: Det er bare - 353 00:17:31,610 --> 00:17:34,920 [Stønner] 354 00:17:34,920 --> 00:17:40,700 >> ROB: Okay, så hvad Ali bare skrev, var et program, som først udskriver 100 - 355 00:17:40,700 --> 00:17:46,290 'A' som et heltal, som var 35, da vi forventer, fordi 100 minus ASCII 356 00:17:46,290 --> 00:17:48,580 Værdien af ​​a er 65 år. 357 00:17:48,580 --> 00:17:54,100 Så hun udskrives vha.% c, hvilket betyder fortolke det som en char. 358 00:17:54,100 --> 00:17:57,050 Så 100 - en er 35. 359 00:17:57,050 --> 00:18:00,990 Tolkning det som et tegn sker for at være den hash symbol. 360 00:18:00,990 --> 00:18:06,160 Hvis man ser på asciitable.com eller hvad, vil du se, at 35 er det 361 00:18:06,160 --> 00:18:07,410 hash symbol. 362 00:18:09,940 --> 00:18:12,700 ALI: Okay, alle andre præciseringer om problemet? 363 00:18:16,000 --> 00:18:18,180 Okay, kan du fyre gå videre og gøre det så. 364 00:18:18,180 --> 00:18:20,330 Du er velkommen til at stille spørgsmål eller tale med hinanden. 365 00:18:20,330 --> 00:18:24,390 Eller hvis du allerede er færdig, kan du slappe af. 366 00:18:24,390 --> 00:18:29,640 >> LUCAS: Er de samme klasse, alle de små bogstaver i orden og 367 00:18:29,640 --> 00:18:32,923 også det store er også i orden, fordi det er noget nyttigt for 368 00:18:32,923 --> 00:18:33,990 problemet. 369 00:18:33,990 --> 00:18:35,620 ALI: God pointe, Lucas. 370 00:18:35,620 --> 00:18:37,430 Så har du fyre alle får det? 371 00:18:37,430 --> 00:18:37,640 SPEAKER 11: Ja. 372 00:18:37,640 --> 00:18:39,535 Det er hvordan du gør det, ikke? 373 00:18:39,535 --> 00:18:39,960 ALI: Right. 374 00:18:39,960 --> 00:18:40,415 ROB: Yeah. 375 00:18:40,415 --> 00:18:47,270 SPEAKER 11: [uhørligt] 376 00:18:47,270 --> 00:18:48,330 ALI: Okay. 377 00:18:48,330 --> 00:18:49,350 ROB: Hvad er spørgsmålet spørger? 378 00:18:49,350 --> 00:18:50,590 Bare for at konvertere - 379 00:18:50,590 --> 00:18:52,560 ALI: Konverter lille til store bogstaver. 380 00:18:52,560 --> 00:18:53,100 Det er det. 381 00:18:53,100 --> 00:18:54,700 ROB: Okay. 382 00:18:54,700 --> 00:18:56,180 ALI: Skal vi skrive det? 383 00:18:56,180 --> 00:18:59,340 Jeg gætter vi bare se på en andens. 384 00:18:59,340 --> 00:19:07,140 ROB: Så for dem, der kunne blive hængende, en måde - 385 00:19:07,140 --> 00:19:15,160 hvis jeg har nogle char c, og lad os sige det sker for at være bogstavet D. 386 00:19:15,160 --> 00:19:20,760 Så nu hvordan kan jeg regne ud, hvad bogstav C er? 387 00:19:20,760 --> 00:19:25,620 Ikke D, men jeg mener, D sker for at være den fjerde bogstav i alfabetet. 388 00:19:25,620 --> 00:19:28,910 Og hvis vi begynder at tælle fra 0, så er det det tredje bogstav i alfabetet. 389 00:19:28,910 --> 00:19:36,240 Så hvis A er 0, B er 1, C er 2, D er 3, hvordan kan jeg finde ud af int position - 390 00:19:36,240 --> 00:19:40,780 hvilken position i alfabetet C er i? 391 00:19:40,780 --> 00:19:42,333 Er der nogen der har nogen ideer? 392 00:19:42,333 --> 00:19:45,440 ALI: Jeg tror, ​​de er alle kodning. 393 00:19:45,440 --> 00:19:46,440 ROB: Hvad med den første? 394 00:19:46,440 --> 00:19:48,608 SPEAKER 12: Så uanset hvad A er, trække den første? 395 00:19:48,608 --> 00:19:49,030 ROB: Yeah. 396 00:19:49,030 --> 00:19:49,950 ALI: Ja, awesome. 397 00:19:49,950 --> 00:19:51,765 Så du kan gøre stort D - 398 00:19:51,765 --> 00:19:52,840 åh, undskyld. 399 00:19:52,840 --> 00:19:55,620 Du tager karakter og du trækker den første, som du sagde. 400 00:19:55,620 --> 00:20:03,940 ROB: Så hvis D er noget i retning af 68, og vi trækker A, som er 65, så får vi 401 00:20:03,940 --> 00:20:07,130 3, fortæller os, at D er det tredje bogstav i alfabetet 402 00:20:07,130 --> 00:20:09,290 startende fra 0. 403 00:20:09,290 --> 00:20:11,310 Så du kan bruge det. 404 00:20:11,310 --> 00:20:13,830 Nu ved vi, hvad bogstav i alfabetet i form af 405 00:20:13,830 --> 00:20:16,060 store bogstaver, eller - 406 00:20:16,060 --> 00:20:18,330 vi kunne gøre det samme for små bogstaver for at finde ud af hvad 407 00:20:18,330 --> 00:20:20,170 små bogstaver position vi befinder os i. 408 00:20:20,170 --> 00:20:25,690 Og vi kan bruge til at konvertere, at til store bogstaver ved hjælp af en 409 00:20:25,690 --> 00:20:26,970 meget lignende ide. 410 00:20:31,470 --> 00:20:32,670 Spørg efter forslag? 411 00:20:32,670 --> 00:20:35,810 >> ALI: Tror du fyre - vent, jeg ved ikke hvor langt jer er. 412 00:20:35,810 --> 00:20:40,060 Er de fleste af jer gjort, er du stadig arbejder, er du fast? 413 00:20:40,060 --> 00:20:42,020 I fyre kan råbe ud - 414 00:20:42,020 --> 00:20:42,330 fast. 415 00:20:42,330 --> 00:20:43,210 En person sidder fast. 416 00:20:43,210 --> 00:20:43,560 Cool. 417 00:20:43,560 --> 00:20:44,700 Jeg har en tendens til at blive hængende, også. 418 00:20:44,700 --> 00:20:45,415 SPEAKER 13: jeg er færdig. 419 00:20:45,415 --> 00:20:46,410 ALI: Du er færdig? 420 00:20:46,410 --> 00:20:47,480 Okay. 421 00:20:47,480 --> 00:20:47,935 Udført. 422 00:20:47,935 --> 00:20:49,300 SPEAKER 13: [uhørligt] 423 00:20:49,300 --> 00:20:50,600 ALI: Ja, cool. 424 00:20:50,600 --> 00:20:53,720 Er du kontrollere, at det er med små bogstaver form? 425 00:20:53,720 --> 00:20:56,730 Okay, cool. 426 00:20:56,730 --> 00:20:59,882 Hvor er andre mennesker? 427 00:20:59,882 --> 00:21:06,140 Har denne antydning hjælpe dig, som for un-stikning dig selv? 428 00:21:06,140 --> 00:21:09,778 SPEAKER 14: Ikke rigtig, men bare fordi, jeg ikke ved, jeg er ikke 429 00:21:09,778 --> 00:21:11,590 fordøje det endnu. 430 00:21:11,590 --> 00:21:12,640 ALI: Okay, cool. 431 00:21:12,640 --> 00:21:13,431 Ønsker du at prøve - 432 00:21:13,431 --> 00:21:16,140 eller ønsker du at gå og snakke? 433 00:21:16,140 --> 00:21:18,590 >> ROB: Hvad jeg ville sige, er - 434 00:21:18,590 --> 00:21:19,890 så ved hjælp af denne. 435 00:21:19,890 --> 00:21:22,650 Kan du forstå, hvordan vi fik, hvad position i alfabetet 436 00:21:22,650 --> 00:21:24,820 brevet er i? 437 00:21:24,820 --> 00:21:30,616 SPEAKER 14: Okay, så når du sætter tingene i en enkelt citat, 438 00:21:30,616 --> 00:21:35,030 der returnerer et tal? 439 00:21:35,030 --> 00:21:37,100 ROB: Ja. 440 00:21:37,100 --> 00:21:40,840 Det vil blive oversat til ASCII værdi, den repræsenterer. 441 00:21:40,840 --> 00:21:43,350 Så har du lyst til at gå til ASCII-tabellen eller hvad det er? 442 00:21:46,456 --> 00:21:47,840 ALI: Bare en af ​​disse? 443 00:21:47,840 --> 00:21:49,970 ROB: Yep. 444 00:21:49,970 --> 00:21:55,270 Så når du lægger nogen af ​​disse symboler, ignorerer en masse af det - 445 00:21:55,270 --> 00:21:56,450 ALI: [uhørligt] 446 00:21:56,450 --> 00:21:57,620 ROB: Åh, ved hjælp af markøren. 447 00:21:57,620 --> 00:21:58,380 ALI: Yeah. 448 00:21:58,380 --> 00:21:59,690 Det var spændende. 449 00:21:59,690 --> 00:22:04,050 ROB: Så ignorerer disse dem på venstrefløjen, som er særlige symboler - 450 00:22:04,050 --> 00:22:08,520 hvis du lægger nogle af disse symboler i anførselstegn, så vil det være 451 00:22:08,520 --> 00:22:11,620 Oversat til denne værdi til venstre. 452 00:22:11,620 --> 00:22:13,660 ALI: Dette er decimaltallet for det. 453 00:22:13,660 --> 00:22:19,710 Det er ligesom A-kampe med 65, B til 66, og du vil opdage, at de er alle i 454 00:22:19,710 --> 00:22:21,540 alfabetisk orden, som gør en forskel. 455 00:22:21,540 --> 00:22:27,110 Så, som Rob siger, før i denne kodeks, vi beregne afstanden fra 456 00:22:27,110 --> 00:22:29,610 det første bogstav i sig selv. 457 00:22:29,610 --> 00:22:32,820 Og det vil være den samme, uanset om det er store eller små bogstaver. 458 00:22:32,820 --> 00:22:38,390 ROB: Så når vi gjorde D, 68 minus A, 65, vi får 3. 459 00:22:38,390 --> 00:22:42,370 Fordi D er tre positioner i alfabetet. 460 00:22:42,370 --> 00:22:46,680 ALI: Så hvordan ville du oversætte, at over at finde den lille d? 461 00:22:46,680 --> 00:22:47,240 ROB: Yeah. 462 00:22:47,240 --> 00:22:52,230 Så hvis jeg har 3 nu, jeg ved, at jeg ønsker at gå tre bogstaver i det - 463 00:22:52,230 --> 00:22:54,830 vi tilfældigvis til at gå små bogstaver nu, men lad os sige jeg ønsker at gå tre 464 00:22:54,830 --> 00:22:58,610 positioner i det lille side af tingene. 465 00:22:58,610 --> 00:23:01,400 Så hvordan kan jeg gøre det? 466 00:23:01,400 --> 00:23:04,240 Jeg ved små bogstaver a er 97. 467 00:23:04,240 --> 00:23:07,535 Så hvordan kan jeg finde tre positioner i de små bogstaver? 468 00:23:10,461 --> 00:23:11,934 >> SPEAKER 15: Jeg har et spørgsmål faktisk. 469 00:23:11,934 --> 00:23:12,425 ALI: Ja, gå videre. 470 00:23:12,425 --> 00:23:14,880 SPEAKER 15: Så for dette, betyder det ikke så meget, om jeg kender denne position, 471 00:23:14,880 --> 00:23:16,360 gerne, jeg har ikke brug for denne tabel. 472 00:23:16,360 --> 00:23:16,840 ROB: Nope. 473 00:23:16,840 --> 00:23:19,380 Du vil aldrig nødt til at bruge nogen af ​​disse numre. 474 00:23:19,380 --> 00:23:23,670 Og det er et vigtigt punkt i dine programmer, som du bør aldrig hårdt 475 00:23:23,670 --> 00:23:25,500 kode nogle af disse konstanter. 476 00:23:25,500 --> 00:23:31,190 Brug 'A'. aldrig bruge 65 eller 97. 477 00:23:31,190 --> 00:23:34,370 ALI: Disse kaldes magiske tal, og de er virkelig forvirrende. 478 00:23:34,370 --> 00:23:37,080 Ligesom, når du debugging en kode, kan du ikke huske, hvad 479 00:23:37,080 --> 00:23:38,020 De brugte dem til. 480 00:23:38,020 --> 00:23:40,770 Og for os klassificering din kode, vil vi ikke rigtig ved, hvad 481 00:23:40,770 --> 00:23:41,750 du bruger dem til. 482 00:23:41,750 --> 00:23:44,815 Så det er bedre, hvis du rent faktisk bruge de tegn, så det gør 483 00:23:44,815 --> 00:23:46,065 mere mening at folk. 484 00:23:49,460 --> 00:23:51,160 Okay, alle andre spørgsmål? 485 00:23:51,160 --> 00:23:52,975 Er flere personer gjort, eller - 486 00:23:56,243 --> 00:23:57,493 Jeg tror vi kan kontrollere. 487 00:23:59,870 --> 00:24:02,410 Det er virkelig uhyggeligt, at du kan se folks kode. 488 00:24:02,410 --> 00:24:04,970 ROB: Yeah. 489 00:24:04,970 --> 00:24:06,410 Vi har ikke at gøre det her. 490 00:24:06,410 --> 00:24:08,380 Vi kender ikke folks navne, enten. 491 00:24:08,380 --> 00:24:10,940 ALI: Oh yeah, godt det gør det bedre, så vi vil være endnu mere saglig 492 00:24:10,940 --> 00:24:14,820 i stedet for bare tilfældigt plukke nogen. 493 00:24:14,820 --> 00:24:15,360 Må ikke bekymre dig. 494 00:24:15,360 --> 00:24:16,265 Jeg vil ikke gøre det. 495 00:24:16,265 --> 00:24:20,396 Hvis du har tilfældige ting om - never mind. 496 00:24:20,396 --> 00:24:20,870 Okay. 497 00:24:20,870 --> 00:24:22,556 Hvordan gør folk? 498 00:24:22,556 --> 00:24:26,950 >> SPEAKER 17: Så niende linje bør udskrive et tegn? 499 00:24:26,950 --> 00:24:27,430 ROB: Ja. 500 00:24:27,430 --> 00:24:27,910 ALI: Yeah. 501 00:24:27,910 --> 00:24:30,770 Så hvis du går ned - 502 00:24:30,770 --> 00:24:32,200 ROB: Åh, kan ikke gøre det. 503 00:24:32,200 --> 00:24:35,400 ALI: Du vil se, at det trykte hash symbol. 504 00:24:35,400 --> 00:24:37,180 SPEAKER 17: Åh, okay. 505 00:24:37,180 --> 00:24:41,290 ROB: Jeg gætter på en anden måde, du kan se på tingene, er vi udskriver to 506 00:24:41,290 --> 00:24:42,540 tegn. 507 00:24:44,500 --> 00:24:47,740 Først en vi udskriver er bogstavet A. 508 00:24:47,740 --> 00:24:51,610 Det næste, vi skal udskrive, er bare 65 år. 509 00:24:51,610 --> 00:24:54,450 Det vil sandsynligvis yell på mig for disse. 510 00:24:54,450 --> 00:25:00,060 Så hvis vi bare køre dette, vil du bemærke, at den udskriver A begge gange. 511 00:25:00,060 --> 00:25:02,070 Fordi vi beder det om det samme. 512 00:25:02,070 --> 00:25:07,840 Vi beder den om at udskrive bogstavet A. Og så er vi beder den om at udskrive 513 00:25:07,840 --> 00:25:13,820 nummer 65 fortolkes som et tegn, der er det samme. 514 00:25:13,820 --> 00:25:15,100 ALI: Har du noget at sige? 515 00:25:15,100 --> 00:25:18,150 Åh, bare for sjov, undskyld. 516 00:25:18,150 --> 00:25:20,640 Okay, hvordan er mennesker - 517 00:25:20,640 --> 00:25:22,280 ROB: Vi kan bare gå igennem det. 518 00:25:22,280 --> 00:25:25,250 >> ALI: Okay, så hvordan kan du begynde? 519 00:25:25,250 --> 00:25:26,500 Anyone? 520 00:25:28,030 --> 00:25:34,486 Som et tip, er vi nødt til at få noget fra folk, fra typers. 521 00:25:34,486 --> 00:25:36,850 SPEAKER 18: [uhørligt] 522 00:25:36,850 --> 00:25:38,290 ALI: Oh yeah, en hurtig, perfekt. 523 00:25:38,290 --> 00:25:40,660 Så vi vil skrive - 524 00:25:40,660 --> 00:25:41,670 hvad gør vi skrive? 525 00:25:41,670 --> 00:25:43,660 Anyone? 526 00:25:43,660 --> 00:25:46,480 Eller skal jeg bare skrive det? 527 00:25:46,480 --> 00:25:47,530 Er vi faktisk at skrive - 528 00:25:47,530 --> 00:25:48,430 ROB: Sure. 529 00:25:48,430 --> 00:25:50,990 ALI: Så vi vil skrive en printf at bede den, så vi kan være 530 00:25:50,990 --> 00:25:54,810 gerne, giv mig et tegn. 531 00:25:54,810 --> 00:25:55,710 Okay, og hvad så? 532 00:25:55,710 --> 00:25:56,664 Hvorfor gør den det? 533 00:25:56,664 --> 00:25:57,620 ROB: Jeg ved det ikke. 534 00:25:57,620 --> 00:26:00,070 ALI: Okay. 535 00:26:00,070 --> 00:26:03,680 Så nu er vi fortæller dem til at give os et tegn. 536 00:26:03,680 --> 00:26:07,064 Men så hvordan kan du faktisk få denne karakter? 537 00:26:07,064 --> 00:26:10,060 SPEAKER 19: Brug GetString. 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 Okay, så hvad er forskellen mellem en streng og en char? 541 00:26:17,038 --> 00:26:20,020 SPEAKER 19: Strenge er en serie, som en række tegn. 542 00:26:20,020 --> 00:26:21,910 >> ALI: Cool, ja. 543 00:26:21,910 --> 00:26:25,550 Så i dette problem, vi behøver kun at overveje et tegn ad gangen, så 544 00:26:25,550 --> 00:26:28,400 vi kun vil gøre getchar for denne instans. 545 00:26:28,400 --> 00:26:32,400 ROB: Vi kunne implementere en funktion, hvis vi ønskede at tog en hel streng 546 00:26:32,400 --> 00:26:35,750 og gik over strengen og ændret alle små bogstaver til store bogstaver, og alle 547 00:26:35,750 --> 00:26:37,380 store bogstaver til små bogstaver. 548 00:26:37,380 --> 00:26:39,170 Men her, vi bare beder dig for en karakter. 549 00:26:39,170 --> 00:26:42,800 ALI: Så nu har vi tegnet her, men så er vi nødt til at gemme det. 550 00:26:42,800 --> 00:26:45,070 Så vi vil tilføje char c - hvad? 551 00:26:45,070 --> 00:26:46,070 SPEAKER 20: Definer variable. 552 00:26:46,070 --> 00:26:48,100 ALI: Ja, præcis. 553 00:26:48,100 --> 00:26:49,585 Så vi har vores karakter. 554 00:26:49,585 --> 00:26:51,766 ROB: Jeg tror, ​​du kunne være - 555 00:26:51,766 --> 00:26:55,630 du er kun tre pladser i, hvorfor det er råben på dig. 556 00:26:55,630 --> 00:27:01,300 >> ALI: Okay, cool, nu da vi har tabbing sæt, hvad sker der nu? 557 00:27:01,300 --> 00:27:02,550 Hvad er næste skridt? 558 00:27:05,590 --> 00:27:08,870 ROB: Hvad vores program skal gøre, er at ændre et lille bogstav til et 559 00:27:08,870 --> 00:27:10,130 stort bogstav. 560 00:27:10,130 --> 00:27:15,478 Hvad hvis jeg tilfældigvis at indtaste hash symbol? 561 00:27:15,478 --> 00:27:16,314 Er, at - 562 00:27:16,314 --> 00:27:16,732 ALI: Det er en god symbol. 563 00:27:16,732 --> 00:27:18,270 Vi bruger det en masse. 564 00:27:18,270 --> 00:27:21,937 ROB: Er det en gyldig ting jeg kan konvertere til et stort formular? 565 00:27:21,937 --> 00:27:23,070 SPEAKER 21: Nej. 566 00:27:23,070 --> 00:27:24,070 ALI: Nej. 567 00:27:24,070 --> 00:27:24,900 Vi skal kontrollere det. 568 00:27:24,900 --> 00:27:34,950 Så vi kan få en if-sætning tjekker så hvis c er større end 569 00:27:34,950 --> 00:27:37,410 eller lig med små bogstaver 'A'- 570 00:27:37,410 --> 00:27:45,490 så hvis vi ser på diagrammet, vil du bemærke, at det skal være mellem her, 571 00:27:45,490 --> 00:27:47,670 på 97, og det lille en. 572 00:27:47,670 --> 00:27:52,110 Og det kan være en af ​​disse, og i intervaller hele vejen ned. 573 00:27:52,110 --> 00:27:55,200 Og så er der z på 122. 574 00:27:55,200 --> 00:27:58,215 Og det skal falde mellem disse to værdier. 575 00:27:58,215 --> 00:27:59,700 Giver det mening? 576 00:27:59,700 --> 00:28:04,130 ROB: Så hvis c er ikke mellem 97 og 122 - 577 00:28:04,130 --> 00:28:09,960 eller du bør aldrig bruge disse numre - hvis c ikke er mellem 'a' og 578 00:28:09,960 --> 00:28:15,110 'Z', så var det ikke et gyldigt tegn for os til store bogstaver. 579 00:28:15,110 --> 00:28:18,590 ALI: Så i form af en kode, siger vi, at hvis c er større end eller lig med single 580 00:28:18,590 --> 00:28:19,640 tilfælde små bogstaver - 581 00:28:19,640 --> 00:28:21,270 wow, hvordan har du det? 582 00:28:21,270 --> 00:28:26,900 Okay, er større end eller lig med det lille 'a', og det skal være over 583 00:28:26,900 --> 00:28:32,250 det lille 'z'. Så det skal være mindre end eller lig med små bogstaver 'z'. 584 00:28:32,250 --> 00:28:35,300 Vi gør sikker på det er mellem de to. 585 00:28:35,300 --> 00:28:38,540 Så kan vi fortsætte med vores lykkelige kode. 586 00:28:41,992 --> 00:28:43,360 Hvad? 587 00:28:43,360 --> 00:28:46,860 ROB: Så jeg regnede vi ville bare holde beder, hvis vi tilfældigvis ikke har en 588 00:28:46,860 --> 00:28:48,250 små bogstaver. 589 00:28:48,250 --> 00:28:51,130 ALI: Åh, jeg var ikke klar over det. 590 00:28:51,130 --> 00:28:52,820 Undskyld. 591 00:28:52,820 --> 00:28:58,100 >> Okay, så hvis vi vil gøre, som Rob siger, og sørg for, at - 592 00:28:58,100 --> 00:29:02,068 vi kan holde spørge dem, så hvad skal vi gøre? 593 00:29:02,068 --> 00:29:02,994 SPEAKER 22: [uhørligt] 594 00:29:02,994 --> 00:29:03,530 ROB: Yeah. 595 00:29:03,530 --> 00:29:05,630 Vi skal bruge nogle form for løkke. 596 00:29:05,630 --> 00:29:12,900 Fordi brugeren kan indtaste noget ugyldig en ufortalt beløb af gange. 597 00:29:12,900 --> 00:29:14,990 Så du kan bruge en while-løkke. 598 00:29:14,990 --> 00:29:18,870 Formålet med en do-while-løkke - 599 00:29:18,870 --> 00:29:21,340 bogstaveligt, den eneste gang i hele dit liv, du nogensinde vil bruge gør- 600 00:29:21,340 --> 00:29:24,780 mens løkker er, når du beder for bruger input. 601 00:29:24,780 --> 00:29:28,260 Så det faktum, at vi beder for bruger input her er der en antydning af, at vi skulle 602 00:29:28,260 --> 00:29:29,660 bruge en gør-while-løkke. 603 00:29:29,660 --> 00:29:30,780 Og hvorfor så det? 604 00:29:30,780 --> 00:29:34,270 Fordi do-while-løkke altid sker mindst én gang. 605 00:29:34,270 --> 00:29:40,260 Så når du beder for bruger input, du ønsker at det skal ske mindst én gang. 606 00:29:40,260 --> 00:29:42,750 Og så hvis tingene var en succes, kan du holde ud. 607 00:29:42,750 --> 00:29:45,130 Hvis ikke, gå tilbage og spørge igen. 608 00:29:45,130 --> 00:29:48,950 >> ALI: Så med andre ord, er vi nødt til at gøre sektion. 609 00:29:48,950 --> 00:29:51,130 Og så dette fortæller det til at gøre noget. 610 00:29:51,130 --> 00:29:53,890 Så printf - 611 00:29:53,890 --> 00:29:57,490 udskrive erklæring, prompten, og også få tegnet, eller forsøge at 612 00:29:57,490 --> 00:29:58,780 få et tegn. 613 00:29:58,780 --> 00:30:03,410 Og så må vi se om det faktisk gjorde det rigtigt. 614 00:30:03,410 --> 00:30:07,730 Så tilføjer vi de betingelser, så siger vi samtidig, og så har vi 615 00:30:07,730 --> 00:30:08,980 betinget erklæring. 616 00:30:11,600 --> 00:30:14,730 ROB: Men nu har vi vendt Tankegang. 617 00:30:14,730 --> 00:30:18,940 Nu vi oprindeligt sagde, hvis c er i dette interval, er det gyldigt. 618 00:30:18,940 --> 00:30:23,340 Nu ønsker vi at vende denne og sige, hvis C ikke er i dette interval, så vi 619 00:30:23,340 --> 00:30:25,020 nødt til at sikkerhedskopiere at gøre tingene igen. 620 00:30:25,020 --> 00:30:25,900 ALI: Oh, yeah. 621 00:30:25,900 --> 00:30:31,720 ROB: Så mens dette ikke er sandt, at vi ønsker at gå tilbage og 622 00:30:31,720 --> 00:30:34,470 bede om en anden karakter. 623 00:30:34,470 --> 00:30:36,880 Skal alle se det? 624 00:30:36,880 --> 00:30:38,830 Spørgsmål til dette? 625 00:30:38,830 --> 00:30:39,400 Okay. 626 00:30:39,400 --> 00:30:43,480 >> Så nu har vi et gyldigt tegn, som vi kan store bogstaver. 627 00:30:43,480 --> 00:30:47,150 ALI: Så hvad det næste skridt for uppercasing det? 628 00:30:49,994 --> 00:30:51,890 SPEAKER 23: Tilføj 32. 629 00:30:51,890 --> 00:30:52,600 ALI: Du tilføjer - 630 00:30:52,600 --> 00:30:54,150 Undskyld, hvad? 631 00:30:54,150 --> 00:30:56,580 SPEAKER 23: Kan du ikke bare tilføje 32? 632 00:30:56,580 --> 00:31:02,360 ROB: Så ja, ikke i form af magiske tal. 633 00:31:02,360 --> 00:31:04,610 Du bør kun bruge single-quote ting. 634 00:31:04,610 --> 00:31:06,450 SPEAKER 23: Okay, godt - 635 00:31:06,450 --> 00:31:07,250 Rob: Men du kan få 32 - 636 00:31:07,250 --> 00:31:11,870 ALI: Hvordan fik du nummer 32, jeg gætte, hvad vi siger. 637 00:31:11,870 --> 00:31:18,060 SPEAKER 23: [uhørligt] 638 00:31:18,060 --> 00:31:22,158 ROB: Så vi kan komme op med nummeret 32 ​​sammen - 639 00:31:22,158 --> 00:31:24,468 SPEAKER 23: [uhørligt]? 640 00:31:24,468 --> 00:31:24,930 ROB: Yeah. 641 00:31:24,930 --> 00:31:28,540 Men hvis vi vil gøre det i de to trin vi gjorde før med 642 00:31:28,540 --> 00:31:29,950 positionen stuff. 643 00:31:29,950 --> 00:31:36,910 Så position i alfabetet, at c sker for at være er c minus små bogstaver 644 00:31:36,910 --> 00:31:42,360 'A'. Så hvis vi ind i en lille "d", er position vil være 3. 645 00:31:42,360 --> 00:31:46,490 Og nu ønsker vi at tage tingene til det store vifte af ting. 646 00:31:46,490 --> 00:31:55,376 Så nu vores nye c vil være hovedstad 'A' plus position. 647 00:31:55,376 --> 00:32:00,090 Så lad folk se, hvordan det bringer os - 648 00:32:00,090 --> 00:32:04,140 vi flytter fra det lille område, den nøjagtige dybde var vi ind i det 649 00:32:04,140 --> 00:32:07,650 interval, og går ned i det store interval, og går så langt 650 00:32:07,650 --> 00:32:10,610 i den igen, er der vil være den samme karakter, men nu 651 00:32:10,610 --> 00:32:12,550 uppercased. 652 00:32:12,550 --> 00:32:16,490 ALI: Og for de mennesker, der blev forvirret af, hvordan han sagde bare 32, 653 00:32:16,490 --> 00:32:20,390 dybest set han kombineret både disse i en erklæring. 654 00:32:20,390 --> 00:32:24,550 Så en tilsvarende måde at skrive dette at sige du kan bare lidt 655 00:32:24,550 --> 00:32:28,190 stedfortræder position, c minus 'a', og sætte det lige her. 656 00:32:28,190 --> 00:32:31,330 Så hvad han gjorde, jeg lad være - 657 00:32:31,330 --> 00:32:44,510 char newc = store bogstaver 'A' plus c minus små bogstaver 'a'. Og på grund af algebra, 658 00:32:44,510 --> 00:32:47,090 du kan flytte dem rundt. 659 00:32:47,090 --> 00:32:52,960 Du kan også sige, at du kan flytte det rundt, så char newc = store bogstaver 'A' 660 00:32:52,960 --> 00:32:55,620 minus små bogstaver 'a' plus ca. 661 00:32:55,620 --> 00:32:58,650 Og dette, vil du bemærke, hvis vi går tilbage til diagrammet. 662 00:33:01,160 --> 00:33:06,300 Vi har store bogstaver A er 65 og små bogstaver a er 97. 663 00:33:06,300 --> 00:33:09,800 Så 65-97 er -32. 664 00:33:09,800 --> 00:33:10,020 >> Hi. 665 00:33:10,020 --> 00:33:10,930 Tag plads. 666 00:33:10,930 --> 00:33:12,180 Oh. 667 00:33:16,240 --> 00:33:17,980 Du kan sidde lige her. 668 00:33:17,980 --> 00:33:20,805 Cool, okay, awesome. 669 00:33:20,805 --> 00:33:22,390 Velkommen til afsnittet. 670 00:33:22,390 --> 00:33:25,110 Du vil bemærke, at forskellen er 32 år. 671 00:33:25,110 --> 00:33:28,150 Så det er hvor han fik dette nummer. 672 00:33:28,150 --> 00:33:32,140 Men det er ikke, som Rob siger, den bedste måde at gøre det på, fordi det har den underlige 673 00:33:32,140 --> 00:33:35,260 magiske tal forvirring. 674 00:33:35,260 --> 00:33:38,710 ROB: Du skal bruge kapital A minus små bogstaver en. 675 00:33:38,710 --> 00:33:43,045 Du bør ikke bruge bare lige 32. 676 00:33:43,045 --> 00:33:45,020 SPEAKER 24: Hvorfor er det, igen? 677 00:33:45,020 --> 00:33:49,860 Hvorfor skal du ikke bruge 32? 678 00:33:49,860 --> 00:33:55,630 ALI: Hvis vi gjorde det, ville det være char newc = -32 + c. 679 00:33:55,630 --> 00:34:00,030 Og hvis du ikke kan se nogen af ​​resten af ​​det, hvis alt dette er væk, og du 680 00:34:00,030 --> 00:34:04,720 bare se denne enkelt linje, så hvordan kan du vide, hvad den negative 32 er? 681 00:34:04,720 --> 00:34:07,000 Det er bare ud af sted. 682 00:34:07,000 --> 00:34:10,360 ROB: Så dit program ville fungere helt fint. 683 00:34:10,360 --> 00:34:12,960 Det er bare en stil ting. 684 00:34:12,960 --> 00:34:17,760 Nogen går ind og læse din kode, de er ligesom hvad betyder 32 betyder? 685 00:34:17,760 --> 00:34:18,889 Måske har de lad være - 686 00:34:18,889 --> 00:34:22,090 Jeg ville sandsynligvis ikke umiddelbart indse, at 32 sker for at være 687 00:34:22,090 --> 00:34:25,100 Forskellen mellem et lille bogstav og et stort bogstav, selv om 688 00:34:25,100 --> 00:34:26,510 vi kommer til at bruge dette i næste problem. 689 00:34:30,210 --> 00:34:31,610 32 er - 690 00:34:31,610 --> 00:34:38,579 du kunne efterlade en kommentar over det siger 32 er forskellen mellem 691 00:34:38,579 --> 00:34:45,290 'A' og 'a'. Men på det tidspunkt, hvorfor så ikke bare bruge 'A' og 'a', og du 692 00:34:45,290 --> 00:34:47,469 behøver ikke kommentaren dengang. 693 00:34:47,469 --> 00:34:52,739 >> ALI: Det er bare de måder over det er meget renere, style-wise. 694 00:34:52,739 --> 00:34:54,590 Og så, da du lige er startet programmering - 695 00:34:54,590 --> 00:34:57,775 eller jeg gætte ikke, fordi du er hacker edi - never mind. 696 00:34:57,775 --> 00:34:59,420 Det er bare en god måde at få - 697 00:34:59,420 --> 00:35:01,230 det er bedre at have bedre stil. 698 00:35:01,230 --> 00:35:02,850 Det er nemmere for andre mennesker at læse. 699 00:35:02,850 --> 00:35:06,560 ROB: Du bør aldrig brug for at huske den ASCII-tabellen, nogensinde. 700 00:35:06,560 --> 00:35:09,505 Du skal bare kunne bruge de enkelte citationstegn. 701 00:35:12,390 --> 00:35:12,730 Spørgsmål? 702 00:35:12,730 --> 00:35:13,980 ALI: Everyone god? 703 00:35:16,020 --> 00:35:16,430 ROB: Okay. 704 00:35:16,430 --> 00:35:23,320 Så næste problem er betydelig. 705 00:35:23,320 --> 00:35:24,660 Så næste problem beder os - 706 00:35:27,880 --> 00:35:31,570 ALI: Det næste problem beder for os at gøre det samme, men at bruge 707 00:35:31,570 --> 00:35:32,640 bitvise operatører. 708 00:35:32,640 --> 00:35:35,170 ROB: Og selvfølgelig har vi ikke set bitvise operatører endnu. 709 00:35:35,170 --> 00:35:38,874 Så vi vil nu diskutere dem. 710 00:35:38,874 --> 00:35:39,540 ALI: Vær begejstret. 711 00:35:39,540 --> 00:35:41,490 De er super sjovt. 712 00:35:41,490 --> 00:35:47,927 >> ROB: Så de regelmæssige operatører, ligesom x plus y, minus, gange, kløft. 713 00:35:47,927 --> 00:35:50,850 ALI: Indtast det i denne prompt. 714 00:35:50,850 --> 00:35:55,420 Rob: Der er også%, hvis du ikke har set det, som du kan bruge ved 715 00:35:55,420 --> 00:35:57,130 procent symbol. 716 00:35:57,130 --> 00:35:59,090 Men vi vil ikke bruge dem, for dette problem. 717 00:35:59,090 --> 00:36:01,400 Vi ønsker at bruge bitvise operatører. 718 00:36:01,400 --> 00:36:06,250 Husk nu, vi bragte det op i forelæsning et. 719 00:36:06,250 --> 00:36:10,760 Jeg er ikke sikker på, om vi har diskuteret binær ud over dette. 720 00:36:10,760 --> 00:36:13,710 Men husk, at hvert enkelt nummer er repræsenteret - 721 00:36:13,710 --> 00:36:14,540 ja, alt - 722 00:36:14,540 --> 00:36:17,860 er repræsenteret i 1s og 0'erne i binær. 723 00:36:17,860 --> 00:36:27,320 Så det betyder, at når jeg siger det nummer 8, jeg tilfældigvis at vide, at det er 724 00:36:27,320 --> 00:36:30,240 lignende, 1000. 725 00:36:30,240 --> 00:36:35,530 What bitvise operatører lad os gøre, er at operere på disse bits - 726 00:36:35,530 --> 00:36:37,000 er opererer på disse bit direkte. 727 00:36:40,160 --> 00:36:42,490 Nu er jeg ikke længere beskæftiger sig med hensyn til otte. 728 00:36:42,490 --> 00:36:45,930 Jeg beskæftiger i form af 1000, og jeg ønsker at gøre ting med dem 729 00:36:45,930 --> 00:36:47,670 individuelle bit. 730 00:36:47,670 --> 00:36:52,520 Så Ali har skrevet bitvise operatører her, men that's - 731 00:36:55,060 --> 00:36:58,020 Tallet 8 vi vil bruge som en af ​​vores eksempel numre. 732 00:36:58,020 --> 00:37:02,980 Og det binære repræsentation er 1000. 733 00:37:02,980 --> 00:37:06,520 Vi vil bruge et andet nummer, 5 - 734 00:37:06,520 --> 00:37:12,070 faktisk lad os bruge 9 og 5. 735 00:37:12,070 --> 00:37:15,778 Og de 5 binære repræsentation er 00 - 736 00:37:15,778 --> 00:37:18,380 0101. 737 00:37:18,380 --> 00:37:19,480 ALI: Er alle godt på det? 738 00:37:19,480 --> 00:37:21,040 Den binære ting? 739 00:37:21,040 --> 00:37:23,740 Det var fra den første forelæsning? 740 00:37:23,740 --> 00:37:29,070 >> ROB: Så selvom du ikke er helt på toppen af, hvordan man konverterer tingene til 741 00:37:29,070 --> 00:37:31,700 binær, det er ikke helt vigtigt for dette problem. 742 00:37:31,700 --> 00:37:36,560 Vi kommer til at bruge det, men du har mange flere chancer for at finde ud af, hvordan man 743 00:37:36,560 --> 00:37:39,250 hurtigt vende tingene til binær. 744 00:37:39,250 --> 00:37:43,820 Så ved hjælp 9 og 5, nu har vi vores bitvise operatører. 745 00:37:43,820 --> 00:37:48,620 Åh, og også, 9 og 5, hvis det er et heltal, så virkelig det er 32 bits, 746 00:37:48,620 --> 00:37:53,150 hvilket betyder, at vi har ligesom 0, 0, 0, 0 en masse gange, så 747 00:37:53,150 --> 00:37:55,330 101 på den bitre ende. 748 00:37:55,330 --> 00:37:58,530 Det er bare fordi, uanset hvad du gør, i heltal, 32 bit. 749 00:37:58,530 --> 00:38:01,570 Bare fordi vi kun skal bruge fire bit til at repræsentere 9 betyder ikke at vi ikke 750 00:38:01,570 --> 00:38:05,500 bruger op de andre 27 bit for bare 0'er. 751 00:38:05,500 --> 00:38:10,110 ALI: Blot for at præcisere, et af disse numre, der er et 0 eller et 1 er en smule. 752 00:38:10,110 --> 00:38:11,830 Denne ene er 4 bits. 753 00:38:11,830 --> 00:38:14,320 Som så Rob sagde, at maskinerne gemme dem i 32. 754 00:38:14,320 --> 00:38:19,430 Så ville de have 32 af enten et 0 eller et 1. 755 00:38:19,430 --> 00:38:22,190 Cool? 756 00:38:22,190 --> 00:38:23,610 ROB: The bitvise operatører. 757 00:38:23,610 --> 00:38:27,310 Den første, som vi vil beskæftige sig med, lad os gøre &. 758 00:38:27,310 --> 00:38:31,260 Så hvis vi gør 9 & 5. 759 00:38:31,260 --> 00:38:38,310 Så hvad & gør, er, lidt efter lidt, det sammenligner bits af de to tal 760 00:38:38,310 --> 00:38:44,860 og hvis begge tal er 1, så vil det returnere en 1. 761 00:38:44,860 --> 00:38:50,870 Hvis man er et 0, og det andet er et 1, eller begge er 0s, så returnerer en 0. 762 00:38:50,870 --> 00:38:53,060 Så du kan tænke på det som dine logiske AND. 763 00:38:53,060 --> 00:38:59,270 Ligesom du har brug for sand og sand til at returnere sandt, men sandt og falsk er falsk. 764 00:38:59,270 --> 00:39:02,390 Så det er det samme, men nu vi har at gøre med det med bare bits. 765 00:39:02,390 --> 00:39:04,910 >> ALI: Så hvis du ser på dette, vil du have 1 - 766 00:39:04,910 --> 00:39:08,490 du line dem op, så det vil være 1 og 0. 767 00:39:08,490 --> 00:39:11,036 Tror du fyre tror, ​​det ville være - hvad ville det evalueres til? 768 00:39:11,036 --> 00:39:11,770 SPEAKER 25: 1. 769 00:39:11,770 --> 00:39:12,270 ALI: Cool. 770 00:39:12,270 --> 00:39:16,850 Eller nej. 771 00:39:16,850 --> 00:39:18,830 Undskyld. 772 00:39:18,830 --> 00:39:21,290 Så betyder det giver mening? 773 00:39:21,290 --> 00:39:23,200 Så hvad er den kollektive svar igen? 774 00:39:23,200 --> 00:39:24,750 Undskyld. 775 00:39:24,750 --> 00:39:27,530 Så hvis vi har 1 og 0, så hvad får du? 776 00:39:27,530 --> 00:39:30,260 ROB: Så du tænker på hvordan du siger og højt. 777 00:39:30,260 --> 00:39:37,550 Hvis to bits, x og y, skal X-og Y at være 1, således at den 778 00:39:37,550 --> 00:39:40,770 at vurdere, sand - eller, for at det at vurdere, 1. 779 00:39:40,770 --> 00:39:45,650 Hvis x eller y er 0, så er det evalueres til falsk eller 0. 780 00:39:45,650 --> 00:39:49,165 LUCAS: Det er godt at huske også at 1 er sandt og 0 er falsk. 781 00:39:49,165 --> 00:39:51,684 Så hvis du har sand & falsk, det er falsk. 782 00:39:51,684 --> 00:39:53,570 Men så, sandt og rigtigt, rigtigt. 783 00:39:53,570 --> 00:39:55,040 False & falsk, falsk. 784 00:39:55,040 --> 00:39:57,650 ALI: Vi har sandt & falsk. 785 00:39:57,650 --> 00:39:58,530 Så 1 og 0. 786 00:39:58,530 --> 00:40:00,380 Så igen, undskyld, en gang til? 787 00:40:00,380 --> 00:40:02,210 SPEAKER 25: Det ville være 0. 788 00:40:02,210 --> 00:40:03,560 Ja, cool. 789 00:40:03,560 --> 00:40:05,400 Og så har vi 0 & 1 - 790 00:40:05,400 --> 00:40:06,260 SPEAKER 25: [uhørligt] 791 00:40:06,260 --> 00:40:06,680 ALI: Yeah. 792 00:40:06,680 --> 00:40:09,790 Så du kan altid bytte dem i - 793 00:40:09,790 --> 00:40:12,150 Så hvis du har 0 og 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: Så det er 0. 797 00:40:16,230 --> 00:40:18,870 Det er ikke, at begge numre er nødt til at være den samme. 798 00:40:18,870 --> 00:40:22,030 Det er, at begge numre er nødt til at være 1. 799 00:40:22,030 --> 00:40:26,150 ALI: Så både nødt til at være sandt for det at være sandt. 800 00:40:26,150 --> 00:40:26,950 Så det er 0. 801 00:40:26,950 --> 00:40:30,540 Og så har du 1% 1, der er? 802 00:40:30,540 --> 00:40:32,640 ROB: Disse er temmelig gode numre. 803 00:40:32,640 --> 00:40:34,362 De har alle mulige - 804 00:40:34,362 --> 00:40:36,210 ALI: Godt arbejde, wow. 805 00:40:36,210 --> 00:40:37,080 Okay, cool. 806 00:40:37,080 --> 00:40:39,220 Så giver det mening for alle? 807 00:40:39,220 --> 00:40:41,770 >> ROB: Så nu vi vil gøre |. 808 00:40:41,770 --> 00:40:51,650 Og det vil være meget ens, men nu i stedet for x og y skulle 809 00:40:51,650 --> 00:40:54,880 være 1 for at det at evaluere til en, nu er det bare x eller 810 00:40:54,880 --> 00:40:56,360 y skal være 1. 811 00:40:56,360 --> 00:40:59,580 ALI: Så 1 | 0 evalueres til - 812 00:40:59,580 --> 00:41:00,270 KLASSE: 1. 813 00:41:00,270 --> 00:41:01,690 ALI: Cool. 814 00:41:01,690 --> 00:41:03,710 0 | 1 evalueres til - 815 00:41:03,710 --> 00:41:04,420 KLASSE: 1. 816 00:41:04,420 --> 00:41:06,726 ALI: Cool, og derefter 0 | 0 - 817 00:41:06,726 --> 00:41:07,600 KLASSE: 0. 818 00:41:07,600 --> 00:41:09,320 ALI: Ja, og derefter 1 | 1 - 819 00:41:09,320 --> 00:41:10,180 KLASSE: 1. 820 00:41:10,180 --> 00:41:12,090 ALI: Cool. 821 00:41:12,090 --> 00:41:14,060 Så det er ligesom to bitvise operatører. 822 00:41:14,060 --> 00:41:15,430 Awesome. 823 00:41:15,430 --> 00:41:16,440 ROB: Så nu vi vil gøre ^. 824 00:41:16,440 --> 00:41:18,470 ALI: Skal vi gøre dem alle? 825 00:41:18,470 --> 00:41:20,620 ROB: Ja, fordi jeg tror, ​​vi kommer til at bruge det - 826 00:41:20,620 --> 00:41:22,340 med dem alle. 827 00:41:22,340 --> 00:41:23,150 ALI: Okay. 828 00:41:23,150 --> 00:41:23,570 Så - 829 00:41:23,570 --> 00:41:25,540 ROB: Jeg gætter vi ikke behøver at. 830 00:41:25,540 --> 00:41:31,830 ALI: Så ^ værker, som du skal have præcis én sand og én falsk. 831 00:41:31,830 --> 00:41:34,330 ^ Betyder eksklusive OR. 832 00:41:34,330 --> 00:41:36,650 Så nu er det ikke - 833 00:41:36,650 --> 00:41:41,220 Hvis x og y er begge 1, er det nu falsk. 834 00:41:41,220 --> 00:41:46,920 Det er forskellen mellem ^ og |, er, at OR, kan du få, hvis x er 835 00:41:46,920 --> 00:41:49,440 sandt eller y er sandt, så er vi er gode. 836 00:41:49,440 --> 00:41:55,176 Nej, ^ siger, at hvis x er sandt, må y være falsk, ellers er det ikke sandt. 837 00:41:55,176 --> 00:41:56,814 Har du et spørgsmål? 838 00:41:56,814 --> 00:42:00,526 >> SPEAKER 26: [uhørligt] 839 00:42:00,526 --> 00:42:00,990 ALI: Yeah. 840 00:42:00,990 --> 00:42:01,830 Det er slags ligner. 841 00:42:01,830 --> 00:42:07,320 ROB: Ja, så når du kommer til at lav-niveau hardware stuff, disse er 842 00:42:07,320 --> 00:42:10,870 de typer af operationer du beskæftiger sig med. 843 00:42:10,870 --> 00:42:13,200 På hardware-niveau, vil du kun beskæftige sig med bits. 844 00:42:13,200 --> 00:42:14,950 Du behøver ikke beskæftige sig med tal. 845 00:42:18,030 --> 00:42:23,502 ALI: Okay, for ^, eller hvis du har en ^ 0, hvad skal der evalueres til? 846 00:42:23,502 --> 00:42:24,840 KLASSE: 1. 847 00:42:24,840 --> 00:42:25,480 ALI: Cool. 848 00:42:25,480 --> 00:42:26,010 Hvis du har 849 00:42:26,010 --> 00:42:28,370 0 ^ 1? KLASSE: 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 Og derefter 1 ^ 1? 854 00:42:33,460 --> 00:42:35,050 KLASSE: 0. 855 00:42:35,050 --> 00:42:37,710 ALI: Cool, awesome. 856 00:42:37,710 --> 00:42:38,620 Den næste - 857 00:42:38,620 --> 00:42:40,520 ROB: Jeg tror, ​​det er alt, hvad vi er nødt til at beskæftige sig med. 858 00:42:40,520 --> 00:42:41,490 Vi vil kun gøre disse. 859 00:42:41,490 --> 00:42:43,242 ALI: Den eneste gang vi bliver nødt til at gøre - 860 00:42:43,242 --> 00:42:44,912 ROB: Oh, vil det være den sidste problem. 861 00:42:44,912 --> 00:42:47,070 SPEAKER 27: Vent, endnu en gang? 862 00:42:47,070 --> 00:42:47,940 ALI: Undskyld, hvad var dit spørgsmål? 863 00:42:47,940 --> 00:42:49,564 >> SPEAKER 27: Kan du forklare det igen? 864 00:42:49,564 --> 00:42:50,100 The ^? 865 00:42:50,100 --> 00:42:51,490 SPEAKER 27: udelukkende et - ja. 866 00:42:51,490 --> 00:42:55,800 ALI: Så hvad den eksklusive OR betyder, at der skal være udelukkende 867 00:42:55,800 --> 00:43:02,970 et virkeligt og et falsk, så en 1 og en 0, kontra med OR, kan du få - 868 00:43:02,970 --> 00:43:06,170 en af ​​dem har til at være sandt, eller dem begge kan være sande, for det 869 00:43:06,170 --> 00:43:07,130 at evaluere til true. 870 00:43:07,130 --> 00:43:10,030 SPEAKER 27: So 0 og 0 ville være falsk. 871 00:43:10,030 --> 00:43:10,450 ALI: Yeah. 872 00:43:10,450 --> 00:43:11,780 Men hvis du har 1 | 873 00:43:11,780 --> 00:43:14,290 1, ville der evalueres til sand. 874 00:43:14,290 --> 00:43:18,210 Men hvis du har en ^ 1, som vi gjorde, som evalueres til FALSK. 875 00:43:18,210 --> 00:43:21,220 Fordi det ikke er udelukkende én er sandt. 876 00:43:21,220 --> 00:43:26,930 ROB: Og det kan eller ikke kan være nyttig, men bemærk, at ^ er 877 00:43:26,930 --> 00:43:28,890 svarende til bare at tage | 878 00:43:28,890 --> 00:43:30,290 minus &. 879 00:43:30,290 --> 00:43:32,250 Og du kan faktisk tænk på det på denne måde. 880 00:43:32,250 --> 00:43:37,290 ^ Er bare ORing alting sammen, men tager nogen af ​​de bits, hvor 881 00:43:37,290 --> 00:43:38,610 begge var sandt. 882 00:43:38,610 --> 00:43:41,620 Så & returnerer alt, hvor begge var sandt. 883 00:43:41,620 --> 00:43:45,850 | Returnerer alt, hvor den ene eller begge var sandt. 884 00:43:45,850 --> 00:43:51,050 Så trække det ud fra | giver dig ^. 885 00:43:51,050 --> 00:43:52,040 ALI: Har du spørgsmål? 886 00:43:52,040 --> 00:43:53,290 Dette var en masse information. 887 00:43:55,980 --> 00:43:57,510 Alle godt? 888 00:43:57,510 --> 00:44:00,360 >> ROB: Vi kan gå over de næste dem til næste problem, skråstreg 889 00:44:00,360 --> 00:44:01,680 hvad er klokken? 890 00:44:01,680 --> 00:44:04,010 De har ikke brug for dette indtil næste problem. 891 00:44:04,010 --> 00:44:07,830 ALI: Jeg troede, det var denne ene. 892 00:44:07,830 --> 00:44:08,830 ROB: Det er ikke. 893 00:44:08,830 --> 00:44:10,085 ALI: Er du sikker? 894 00:44:10,085 --> 00:44:11,300 ROB: Ja, jeg er positiv. 895 00:44:11,300 --> 00:44:12,970 ALI: Skal vi ikke begynder at gøre det næste problem? 896 00:44:15,710 --> 00:44:19,790 Problemet er, igen, at ændre det fra små bogstaver til store bogstaver, og det 897 00:44:19,790 --> 00:44:21,720 tid til at bruge bitvise operatører. 898 00:44:21,720 --> 00:44:22,970 ROB: Så vi vil - 899 00:44:25,290 --> 00:44:29,670 lad os starte med den binære repræsentation af 'A', hovedstad 'A', 900 00:44:29,670 --> 00:44:31,750 som er 65 år. 901 00:44:31,750 --> 00:44:36,150 Så i binær - 902 00:44:39,960 --> 00:44:47,900 så 'A' = 65, hvilket =, i binær - 903 00:44:47,900 --> 00:44:51,380 Jeg har tænkt mig at lave rod i antallet af 0s - det. 904 00:44:51,380 --> 00:44:53,670 ALI: Så gør det mening for alle? 905 00:44:53,670 --> 00:44:57,620 Så, 1, ingen 2s, ingen 4s, nej 8s, nej - 906 00:45:00,238 --> 00:45:07,075 ingen 16s, ingen 32'ere, og derefter en 64. 907 00:45:07,075 --> 00:45:08,685 ROB: Ja, jeg tror, ​​det er en alt for mange 0'er. 908 00:45:08,685 --> 00:45:09,600 ALI: Undskyld. 909 00:45:09,600 --> 00:45:13,410 >> ROB: Okay, så vi har den 64 sæt, og vi har 1 sæt, og kombinere dem 910 00:45:13,410 --> 00:45:16,030 sammen, får vi 65 år. 911 00:45:16,030 --> 00:45:17,470 ALI: Cool bønner? 912 00:45:17,470 --> 00:45:19,640 ROB: Så nu, små bogstaver 'A'- 913 00:45:22,220 --> 00:45:24,260 bemærke 97 - 914 00:45:24,260 --> 00:45:26,370 hvad er forskellen mellem 97 og 65? 915 00:45:26,370 --> 00:45:27,530 SPEAKER 28: 32. 916 00:45:27,530 --> 00:45:28,130 ROB: Yeah. 917 00:45:28,130 --> 00:45:35,920 Så det er 32, som er sin egen bit, så det kommer til at være 110.001. 918 00:45:35,920 --> 00:45:41,200 Og det vil være sandt for alle mulige tegn. 919 00:45:41,200 --> 00:45:49,800 Så hvis vi tænker på 'D', som kommer til at være 68, er der vil være 1.000.011. 920 00:45:49,800 --> 00:45:56,310 Og så lille 'd' vil være 68 plus 32, som er 100, hvilket er 921 00:45:56,310 --> 00:46:00,010 vil være det samme, at det var, bare spejlvende 922 00:46:00,010 --> 00:46:04,300 32 igen, så 1.100.011. 923 00:46:04,300 --> 00:46:08,610 Så forskellen mellem et stort og lille bogstav er bare flippe 924 00:46:08,610 --> 00:46:10,170 at 32-bit position. 925 00:46:10,170 --> 00:46:17,670 SPEAKER 29: Er det ikke 1.000.100? 926 00:46:17,670 --> 00:46:19,670 ROB: Vent, det er 100 - 927 00:46:19,670 --> 00:46:20,480 noget jeg gjorde forkert. 928 00:46:20,480 --> 00:46:21,730 Dette var ikke sandt. 929 00:46:28,710 --> 00:46:31,150 Jeg tænkte, at det var en forskel på 3, så så jeg bare fast 930 00:46:31,150 --> 00:46:33,970 den binære 3 i slutningen. 931 00:46:33,970 --> 00:46:36,710 Dette bør være rigtigt. 932 00:46:36,710 --> 00:46:37,150 ALI: Tak. 933 00:46:37,150 --> 00:46:38,080 God til at pege det ud. 934 00:46:38,080 --> 00:46:40,320 Det var skarp. 935 00:46:40,320 --> 00:46:43,450 Okay, er det klart for folk? 936 00:46:43,450 --> 00:46:45,700 >> ROB: Forskellen mellem store og små bogstaver version er 937 00:46:45,700 --> 00:46:49,250 altid bare at være 32, og så det altid vil være en enkelt bit 938 00:46:49,250 --> 00:46:51,840 der skal vendes til at skifte mellem de to. 939 00:46:51,840 --> 00:46:54,330 ALI: Så i dette tilfælde, at kende forskellen mellem hovedstaden A og 940 00:46:54,330 --> 00:46:57,130 det lille a er en god ting. 941 00:46:57,130 --> 00:47:01,950 Ikke i din kode, men begrebsmæssigt mindst, er det godt. 942 00:47:01,950 --> 00:47:05,880 Så du fyre kan gå videre og kode, der i Spaces nu. 943 00:47:05,880 --> 00:47:08,580 Eller skal vi bare diskutere det? 944 00:47:08,580 --> 00:47:09,760 ROB: Vi kan bare diskutere det. 945 00:47:09,760 --> 00:47:10,680 Det ved jeg ikke. 946 00:47:10,680 --> 00:47:11,680 Du fyre kan prøve. 947 00:47:11,680 --> 00:47:13,560 Tal blandt dig selv for lidt. 948 00:47:13,560 --> 00:47:16,390 Vi vil give dig en chance for at kode det. 949 00:47:16,390 --> 00:47:17,640 [Indskyde STEMMER] 950 00:47:19,785 --> 00:47:22,695 ALI: - er cool 951 00:47:22,695 --> 00:47:26,590 SPEAKER 30: Dette er ligesom hacker komedie. 952 00:47:26,590 --> 00:47:31,060 ALI: Ja, vi er bare at fortælle nyheden, går igennem den. 953 00:47:31,060 --> 00:47:32,310 >> Rob: Og vi er tilbage. 954 00:47:34,950 --> 00:47:35,405 ALI: Det er lidt underligt. 955 00:47:35,405 --> 00:47:38,720 Jeg mener ligesom vi bør have en CS50 nyhed station og vi kunne 956 00:47:38,720 --> 00:47:41,500 faktisk sidde sådan her. 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: Du er velkommen til at stille spørgsmål, hvis du er forvirret. 960 00:47:52,280 --> 00:47:53,980 ROB: Er der nogen fast? 961 00:47:53,980 --> 00:47:57,160 ALI: Ja, det er en god ting. 962 00:47:57,160 --> 00:47:58,590 ALI: Vent, er du fast i din stol? 963 00:47:58,590 --> 00:48:01,010 Oh. 964 00:48:01,010 --> 00:48:02,260 Jeg var lidt bekymret. 965 00:48:06,670 --> 00:48:12,150 ROB: Fordi jeg har lige indset, at vi vil ønsker 966 00:48:12,150 --> 00:48:13,300 en anden bitvis operatør. 967 00:48:13,300 --> 00:48:16,985 For nu, lad os bare konvertere store til små bogstaver. 968 00:48:23,280 --> 00:48:25,220 ALI: Beklager, alle får denne meddelelse? 969 00:48:25,220 --> 00:48:27,755 Vi kommer til at gå fra store til små bogstaver. 970 00:48:27,755 --> 00:48:30,990 ROB: Så vil vi diskutere små bogstaver til store bogstaver lige efter det. 971 00:48:33,820 --> 00:48:36,650 Åh, nej. 972 00:48:36,650 --> 00:48:39,560 Vi har en fejl i dette, som, jeg tror, ​​vi aldrig prøvet at løbe. 973 00:48:39,560 --> 00:48:44,140 Som er lige at char c skal erklæret uden for sløjfen, da 974 00:48:44,140 --> 00:48:45,805 dens anvendelsesområde er begrænset i sløjfen. 975 00:48:49,200 --> 00:48:53,060 SPEAKER 32: I dette tilfælde er det forkert at bruge et nummer? 976 00:48:53,060 --> 00:48:56,930 ROB: Eh, behøver du ikke til. 977 00:48:56,930 --> 00:49:02,040 Hvis jeg garanteret dig at kapital 'A'- eller små bogstaver' a 'minus hovedstad' A ' 978 00:49:02,040 --> 00:49:09,340 var præcis én bit, men at du ikke ved det er 32 - 979 00:49:09,340 --> 00:49:13,160 ting ville fungere lige så godt, hvis det var den 16 bit, der blev vendt - eller 980 00:49:13,160 --> 00:49:14,610 nej, jeg tror det wouldn't - 981 00:49:14,610 --> 00:49:18,270 eller 64 bit blev vendt, evt. 982 00:49:18,270 --> 00:49:23,230 Men du bør ikke være nødvendigt at bruge 32. 983 00:49:23,230 --> 00:49:26,141 Du kan i stedet bruge små bogstaver 'a' minus hovedstad 'A'. 984 00:49:26,141 --> 00:49:29,340 >> SPEAKER 32: Okay. 985 00:49:29,340 --> 00:49:32,996 Hvad du kan gøre, hvis du føler at du er ved at skrive for meget er du kan definere det 986 00:49:32,996 --> 00:49:33,435 øverst. 987 00:49:33,435 --> 00:49:41,830 Så du kan være ligesom, int forskel = små bogstaver 'a' minus hovedstad 'A'. Og 988 00:49:41,830 --> 00:49:43,980 så kan du skrive forskel i stedet. 989 00:49:43,980 --> 00:49:45,110 Det er gyldigt. 990 00:49:45,110 --> 00:49:48,002 Men bare bruger nummer 32 er lidt - 991 00:49:48,002 --> 00:49:51,104 SPEAKER 33: Selvom det er på grund af det faktum, at det er den 32 bit? 992 00:49:51,104 --> 00:49:52,570 ALI: Yeah. 993 00:49:52,570 --> 00:49:54,960 ROB: Der kan være - 994 00:49:54,960 --> 00:49:57,780 den eneste garanti, vi er nødt til at gøre dig er, at forskellen mellem den 995 00:49:57,780 --> 00:49:59,480 små og store er én bit. 996 00:49:59,480 --> 00:50:04,670 Det bør ikke noget, at det sker for at være den 32 bit, der er vendt. 997 00:50:04,670 --> 00:50:06,610 For tiden overvejelser, vil vi begynde at gå over dette. 998 00:50:09,170 --> 00:50:10,370 Det er okay, hvis du ikke er færdig. 999 00:50:10,370 --> 00:50:13,090 Det skal du ikke tænke på. 1000 00:50:13,090 --> 00:50:16,260 ROB: Forudsat c er et stort bogstav - 1001 00:50:16,260 --> 00:50:18,030 vi behøver ikke at antage c er et stort bogstav. 1002 00:50:18,030 --> 00:50:20,750 Vi ved, c er et stort bogstav efter denne while-løkken - 1003 00:50:20,750 --> 00:50:22,160 do-while-løkke. 1004 00:50:22,160 --> 00:50:28,590 Så det betyder, at det ser ud som dette 'A'. Så hvis vi ønsker at bringe dette 1005 00:50:28,590 --> 00:50:32,895 'A' til dette 'a', hvad vi skal gøre? 1006 00:50:36,890 --> 00:50:41,920 Så hvordan kan vi konvertere og vende bit? 1007 00:50:48,040 --> 00:50:49,450 ALI: Hvordan kan vi vende det? 1008 00:50:49,450 --> 00:50:53,010 >> ROB: Så vi ved, at vi ønsker at vende 32 bit. 1009 00:50:53,010 --> 00:50:59,722 Så det vil gøre 'a' minus 'A', eller vi kunne skrive 32, men - 1010 00:50:59,722 --> 00:51:03,090 darn det, det er den anden vej rundt. 1011 00:51:03,090 --> 00:51:07,250 ALI: Okay så Rob her er beregningen af ​​nævnte antal, magiske tal 32. 1012 00:51:07,250 --> 00:51:12,000 Så han finde ud af, hvor denne bit flip område ville være. 1013 00:51:12,000 --> 00:51:14,810 Og hvad gør vi sætte hvor spørgsmålstegnene er? 1014 00:51:14,810 --> 00:51:16,740 ROB: Hvordan kan vi vende det lidt? 1015 00:51:16,740 --> 00:51:22,784 Med hensyn til det store bogstav, er det et 0, og vi ønsker at blive en 1. 1016 00:51:22,784 --> 00:51:23,660 SPEAKER 34: |. 1017 00:51:23,660 --> 00:51:24,910 ROB: Yeah. 1018 00:51:28,780 --> 00:51:38,190 Så dette er os siger vi tage 'A'. Vi ORing det med 0 - 1019 00:51:38,190 --> 00:51:40,750 1000 - 1020 00:51:40,750 --> 00:51:44,720 og at = at. 1021 00:51:44,720 --> 00:51:45,930 ALI: Giver det mening for alle? 1022 00:51:45,930 --> 00:51:48,812 Vi kan gå igennem det lidt efter lidt, hvis du ønsker. 1023 00:51:52,030 --> 00:51:56,300 SPEAKER 35: Er du [uhørligt]? 1024 00:51:56,300 --> 00:51:57,590 ALI: Hvor er minustegn? 1025 00:51:57,590 --> 00:51:58,500 ROB: Åh, du mener her? 1026 00:51:58,500 --> 00:51:59,070 ALI: Oh, yeah. 1027 00:51:59,070 --> 00:52:00,140 ROB: Så jeg gætte, dette er os. 1028 00:52:00,140 --> 00:52:05,670 Vi kunne sige 32, og nu er vi bare bruger bitvise operatører. 1029 00:52:05,670 --> 00:52:07,010 ALI: Vi kan ikke lide magiske tal. 1030 00:52:07,010 --> 00:52:10,460 Vi vil ikke gøre det. 1031 00:52:10,460 --> 00:52:13,592 Også jeg synes, vi skal bare bruge en bitvis operatør - 1032 00:52:13,592 --> 00:52:19,042 SPEAKER 36: Hvis du bruger en ^ A, vil du få 32? 1033 00:52:19,042 --> 00:52:19,980 SPEAKER 37: Ja, jeg tror - 1034 00:52:19,980 --> 00:52:21,090 ROB: Ja du vil. 1035 00:52:21,090 --> 00:52:23,320 ALI: Dette er, hvordan du ville have gjort det for at gå 1036 00:52:23,320 --> 00:52:25,370 fra kapital til små bogstaver. 1037 00:52:25,370 --> 00:52:31,130 >> Nu kan nogen fortælle mig, hvorfor Rob og jeg skiftede hurtig og hvordan vi gik 1038 00:52:31,130 --> 00:52:34,040 fra store små, små bogstaver i stedet for at 1039 00:52:34,040 --> 00:52:37,810 store bogstaver, som vi gjorde før? 1040 00:52:37,810 --> 00:52:44,520 Er der nogen der har nogen ideer, hvorfor det kan være mere besværligt? 1041 00:52:44,520 --> 00:52:44,880 ROB: Så vi ville gøre - 1042 00:52:44,880 --> 00:52:46,178 ALI: Ja, gå videre. 1043 00:52:46,178 --> 00:52:49,640 SPEAKER 38: | operatør var kun virkelig god til at tilføje. 1044 00:52:49,640 --> 00:52:51,200 ALI: Ja, præcis. 1045 00:52:51,200 --> 00:52:58,320 ROB: Så hvad vi ønsker at gøre i det lille til store bogstaver sag er, 1046 00:52:58,320 --> 00:53:00,175 konvertere dette 'A'- 1047 00:53:08,540 --> 00:53:14,820 så vi ønsker at sætte i nogle numre her og bruge nogle operatør, så det kommer 1048 00:53:14,820 --> 00:53:21,910 ud til kapital A. Vi er stadig formentlig ved hjælp af 32 eller anden måde, men nu hvordan gør vi 1049 00:53:21,910 --> 00:53:25,280 få dette til at komme ud af dette? 1050 00:53:40,910 --> 00:53:42,750 So c - 1051 00:53:42,750 --> 00:53:44,000 åh, jeg stadig ønsker at også - 1052 00:53:46,940 --> 00:53:51,055 ALI: Så nu, hvis vi konverterer fra små bogstaver til store bogstaver igen, så vi 1053 00:53:51,055 --> 00:53:55,170 gøre det ^ operation, da du fyre sagde. 1054 00:53:55,170 --> 00:53:57,650 ROB: Der er andre måder, du kan gøre tingene på. 1055 00:53:57,650 --> 00:54:01,680 En masse af de bitvise operatører ender med at blive meget let definerbar i form 1056 00:54:01,680 --> 00:54:03,460 af andre bitvise operatører. 1057 00:54:03,460 --> 00:54:11,150 Så jeg skulle ikke bruge ^ eller overhovedet, men ^ fungerede helt fint. 1058 00:54:11,150 --> 00:54:17,910 >> ALI: Okay, så vi kommer til at gå på det sidste problem, som er at grundlæggende - 1059 00:54:17,910 --> 00:54:22,390 det sidste problem er at konvertere noget til binær. 1060 00:54:22,390 --> 00:54:26,350 Så, for eksempel, har du 50 og derefter du konvertere den til 1061 00:54:26,350 --> 00:54:31,400 binære, hvilket er 110.010. 1062 00:54:31,400 --> 00:54:36,010 Og jeg tror du fyre kender alle binær fra forelæsning. 1063 00:54:36,010 --> 00:54:39,270 Og du er heller ikke meningen at lægge nogen førende 0'er ind i det. 1064 00:54:39,270 --> 00:54:41,460 ROB: Du kan ignorere denne del for nu. 1065 00:54:41,460 --> 00:54:45,250 Den første passage, kan du gøre det, så der er førende 0'er. 1066 00:54:45,250 --> 00:54:49,200 Og så kan vi ændre det at have nogen ledende 0'er, hvis vi har tid. 1067 00:54:49,200 --> 00:54:50,630 ALI: Så du skal ikke bekymre dig om det. 1068 00:54:50,630 --> 00:54:52,620 Bare prøv at komme i binær. 1069 00:54:55,880 --> 00:54:59,855 Et godt sted at starte ville være - 1070 00:54:59,855 --> 00:55:02,010 ROB: Vi er nødt til at bede om et heltal. 1071 00:55:02,010 --> 00:55:03,150 ALI: Oh yeah, det er en god en. 1072 00:55:03,150 --> 00:55:04,170 Vi kan starte med det. 1073 00:55:04,170 --> 00:55:06,870 Så du kan ændre prompten. 1074 00:55:06,870 --> 00:55:08,840 Så i stedet for en karakter, vi nu har at gøre med heltal. 1075 00:55:13,670 --> 00:55:14,920 Cool? 1076 00:55:20,630 --> 00:55:25,300 >> ROB: Og nu, hvad er vores do-mens betingelse vil være? 1077 00:55:25,300 --> 00:55:27,750 Det er beder om et ikke-negativt heltal. 1078 00:55:31,080 --> 00:55:34,280 ALI: Hvornår skal vi ønsker at holde brugeren bliver spurgt efter noget andet? 1079 00:55:34,280 --> 00:55:35,950 Når det er mindre end 0. 1080 00:55:35,950 --> 00:55:36,760 ALI: Right. 1081 00:55:36,760 --> 00:55:38,010 ROB: Mens jeg er mindre end 0. 1082 00:55:41,090 --> 00:55:45,120 ALI: Nu vil vi konvertere den. 1083 00:55:45,120 --> 00:55:48,150 Tror du fyre har nogen ideer om hvad man skal gøre? 1084 00:55:48,150 --> 00:55:49,400 Eventuelle antydninger? 1085 00:55:53,610 --> 00:55:54,984 Yeah. 1086 00:55:54,984 --> 00:55:57,344 SPEAKER 39: Har vi nødt til at konvertere det, eller kan vi bare printe nogle 0'er og 1'ere 1087 00:55:57,344 --> 00:55:58,760 det ville være det rigtige nummer? 1088 00:55:58,760 --> 00:56:02,070 Kunne du gøre en for-løkke og tælle ud af potenser af 2? 1089 00:56:02,070 --> 00:56:03,320 ROB: Ja. 1090 00:56:05,750 --> 00:56:08,425 Du behøver ikke at konvertere jeg til dens binære - 1091 00:56:08,425 --> 00:56:13,720 Den binære repræsentation af jeg vil ikke passe ind i i. 1092 00:56:13,720 --> 00:56:19,090 Du skal bare nødt til at udskrive den binære repræsentation af i. 1093 00:56:19,090 --> 00:56:21,010 ALI: Med andre ord, behøver du ikke at gå af beføjelser to. 1094 00:56:21,010 --> 00:56:23,710 ROB: Fordi jeg allerede er ved at blive lagret som binære filer, så du ikke behøver at 1095 00:56:23,710 --> 00:56:25,110 konvertere den til binær. 1096 00:56:25,110 --> 00:56:27,260 Bare gå over dens binære, og udskrive det. 1097 00:56:30,080 --> 00:56:32,140 Og du vil få brug for at bruge bitvis, fordi du ønsker at se på 1098 00:56:32,140 --> 00:56:33,390 de faktiske bits. 1099 00:56:37,060 --> 00:56:38,600 Du behøver ikke at bruge bitvis, men venligst gøre. 1100 00:56:44,130 --> 00:56:47,160 Og det er faktisk - 1101 00:56:47,160 --> 00:56:50,200 du kan bare gøre potenser af to ved at multiplicere med 2. 1102 00:56:50,200 --> 00:56:55,120 Vi vil gå over en af ​​de sidste to binære bitvise operatører, 1103 00:56:55,120 --> 00:56:56,410 der er denne ene. 1104 00:56:56,410 --> 00:56:58,730 Så når du tager - 1105 00:56:58,730 --> 00:57:00,083 >> ALI: Kan du gå igennem dem begge? 1106 00:57:00,083 --> 00:57:01,440 ROB: Yeah. 1107 00:57:01,440 --> 00:57:03,050 Så lad os gå med 9. 1108 00:57:03,050 --> 00:57:05,210 Så 9 venstre skift 1 - 1109 00:57:05,210 --> 00:57:12,220 hvad venstre shift organ er bare flytte alle bits til venstre og indsætte en 0. 1110 00:57:12,220 --> 00:57:15,530 Så vi flytter alle bits af 9 til den venstre 1111 00:57:15,530 --> 00:57:20,240 position, hvilket giver os - 1112 00:57:26,530 --> 00:57:31,570 Så opdager vi har flyttet alt forladt en, og indsat en 0 på 1113 00:57:31,570 --> 00:57:32,730 højre side. 1114 00:57:32,730 --> 00:57:36,755 Hvis vi havde flyttet efterladt af to, ville vi flytte alt efterladt af to, 1115 00:57:36,755 --> 00:57:41,950 og isæt to 0'erne at udfylde hullerne. 1116 00:57:41,950 --> 00:57:43,200 Spørgsmål? 1117 00:57:44,890 --> 00:57:47,510 ALI: Så højre shift gør en lignende ting. 1118 00:57:47,510 --> 00:57:53,190 Hvis du har 9 højre shift 1 så er du bare flytte alt over til 1119 00:57:53,190 --> 00:57:57,890 højre, mister du et ciffer, så 100 i stedet. 1120 00:57:57,890 --> 00:58:04,142 ROB: Så du det er fint, at du er ved at miste den smule, der tilfældigvis alle 1121 00:58:04,142 --> 00:58:05,200 vejen til højre. 1122 00:58:05,200 --> 00:58:08,850 Der findes forskellige typer af rigtige skift, men dybest set du kan tænke på 1123 00:58:08,850 --> 00:58:11,410 HØJRE SKIFT som bare dividere med 2. 1124 00:58:11,410 --> 00:58:14,430 Og du kan tænke på venstre skift som multiplikation med 2. 1125 00:58:14,430 --> 00:58:16,490 Så hvis du har konverteret dette - 1126 00:58:16,490 --> 00:58:22,350 Hvis du har konverteret 9 skift 1, som er lig med 10010, hvis du rent faktisk gik 1127 00:58:22,350 --> 00:58:25,100 gennem den binære og regnet ud, hvad det var, ville det bare være 18 år. 1128 00:58:25,100 --> 00:58:26,880 Vi har lige ganges med 2. 1129 00:58:26,880 --> 00:58:30,982 1001 venstre Shift 2 vil være 36. 1130 00:58:30,982 --> 00:58:32,400 Vi gang med 4. 1131 00:58:41,740 --> 00:58:45,360 Okay, cool, så det er en handy bitvis operatør for denne ene. 1132 00:58:52,570 --> 00:58:53,330 Mere forvirring? 1133 00:58:53,330 --> 00:58:54,870 Vil du fyre ønsker at prøve det? 1134 00:58:54,870 --> 00:58:58,970 Eller vi kan bare hoppe ret i og starte det? 1135 00:58:58,970 --> 00:59:01,140 ROB: Vi skal nok springe ret i. 1136 00:59:01,140 --> 00:59:01,880 ALI: Ja, Okay. 1137 00:59:01,880 --> 00:59:03,370 Rob: Og gå igennem det sammen. 1138 00:59:03,370 --> 00:59:04,440 >> ALI: Jamen jeg vil bare gå ind i det. 1139 00:59:04,440 --> 00:59:09,700 Så som han sagde i starten, vil vi bare gå igennem lidt efter lidt. 1140 00:59:09,700 --> 00:59:11,890 Så vi får brug for en løkke. 1141 00:59:11,890 --> 00:59:16,730 Er der nogen der har en idé om den bedste form for løkke til at gå igennem det her? 1142 00:59:16,730 --> 00:59:20,544 Vi har mens sløjfer, gør-while-løkker, for sløjfer. 1143 00:59:20,544 --> 00:59:22,400 SPEAKER 40: Do-while-løkke? 1144 00:59:22,400 --> 00:59:25,150 ROB: Så husk hvad jeg sagde før om, at vi kun bruger gør-mens 1145 00:59:25,150 --> 00:59:27,390 løkker for at få brugerinput. 1146 00:59:27,390 --> 00:59:30,890 Du vil aldrig temmelig meget nogensinde bruge dem til noget andet. 1147 00:59:30,890 --> 00:59:33,660 ALI: Problemet med gør-while-løkker er det gør noget, før det kontrollerer, om 1148 00:59:33,660 --> 00:59:34,470 tilstanden. 1149 00:59:34,470 --> 00:59:36,540 Så kunne den gøre noget slemt - 1150 00:59:36,540 --> 00:59:38,640 gerne, ondt - 1151 00:59:38,640 --> 00:59:40,350 gøre noget, er ikke muligt. 1152 00:59:40,350 --> 00:59:42,290 Så du ønsker at tjekke først. 1153 00:59:42,290 --> 00:59:47,620 ROB: Der er en masse sager, hvor du kan bruge do-while-løkker, men folk 1154 00:59:47,620 --> 00:59:52,120 forventer ikke, at du bruger dem, medmindre det er brugerinput. 1155 00:59:52,120 --> 00:59:54,215 Så vi har brugt vores do-while-løkke til at få i. 1156 00:59:57,160 --> 01:00:01,260 Hvor mange gange er vores løkke vil ønsker at sløjfe? 1157 01:00:01,260 --> 01:00:04,060 Vi ønsker at sløjfe over hver af bittene i. 1158 01:00:04,060 --> 01:00:06,302 Hvor mange bits er i i? 1159 01:00:06,302 --> 01:00:07,266 SPEAKER 41: 32. 1160 01:00:07,266 --> 01:00:07,750 ALI: Yeah. 1161 01:00:07,750 --> 01:00:09,850 ROB: Så der er 32 bit. 1162 01:00:09,850 --> 01:00:12,920 Vi ønsker ikke at sige 32. 1163 01:00:12,920 --> 01:00:16,230 Vi i stedet ønsker at sige sizeof - 1164 01:00:16,230 --> 01:00:18,226 der, har du set, at der i klassen endnu? 1165 01:00:18,226 --> 01:00:19,100 ALI: Nope. 1166 01:00:19,100 --> 01:00:20,380 ROB: Hvorfor får jeg at bruge det - 1167 01:00:20,380 --> 01:00:22,160 sizeof (int) gange 8 - 1168 01:00:22,160 --> 01:00:23,530 ALI: Så sizeof er - 1169 01:00:23,530 --> 01:00:27,050 >> SPEAKER 42: [uhørligt] 1170 01:00:27,050 --> 01:00:27,440 ALI: Interessant. 1171 01:00:27,440 --> 01:00:31,610 Så sizeof er en indbygget i C-funktion, hvor det bare fortæller dig det 1172 01:00:31,610 --> 01:00:32,500 antallet af bit i - 1173 01:00:32,500 --> 01:00:33,220 ROB: Bytes. 1174 01:00:33,220 --> 01:00:34,210 ALI: Bytes, undskyld - 1175 01:00:34,210 --> 01:00:39,990 antallet af bytes, at en variabel er nødt til at gemme en værdi. 1176 01:00:39,990 --> 01:00:46,205 Så jeg tror, ​​at han gik over i klassen, så en int er 4 byte måske. 1177 01:00:46,205 --> 01:00:46,610 Cool? 1178 01:00:46,610 --> 01:00:50,610 ROB: Men du bør ikke brug for at vide, at en int er 4 bytes. 1179 01:00:50,610 --> 01:00:52,670 Du bør være i stand til at sige - 1180 01:00:52,670 --> 01:00:55,870 du skal bruge sizeof (int) for at få 4 byte. 1181 01:00:55,870 --> 01:00:59,170 Og det er faktisk vigtigt for nogle ting. 1182 01:00:59,170 --> 01:01:01,650 En int måske ikke være 4 bytes. 1183 01:01:01,650 --> 01:01:04,050 På en anden computer, kan en int være 8 bytes. 1184 01:01:04,050 --> 01:01:08,500 Så dit program fungerer ikke på denne computer, fordi du hard-coded 32 1185 01:01:08,500 --> 01:01:12,230 bits, når på den pågældende computer sker for at være 64 bit. 1186 01:01:12,230 --> 01:01:15,260 ALI: Så du har det samlede antal bit, som du ønsker det at vende. 1187 01:01:15,260 --> 01:01:17,480 ROB: Og forskellen mellem en byte og en bit er, at der 1188 01:01:17,480 --> 01:01:19,100 er 8 bit i en byte. 1189 01:01:19,100 --> 01:01:22,110 Så sizeof (int) returnerer 4 bytes, så vi er nødt til at formere sig, at 1190 01:01:22,110 --> 01:01:24,420 med 8 for at få 32 bit. 1191 01:01:24,420 --> 01:01:27,680 >> ALI: Okay, så vi kender det maksimale, og vi ved, at vi ønsker at gå fra - 1192 01:01:27,680 --> 01:01:29,260 vi ønsker at gå igennem dem alle. 1193 01:01:29,260 --> 01:01:32,950 Så vi ønsker at gå fra 0 til numBits. 1194 01:01:32,950 --> 01:01:37,160 Så er der nogen vide, hvordan man skriver løkken for det? 1195 01:01:37,160 --> 01:01:37,790 Anyone? 1196 01:01:37,790 --> 01:01:39,680 SPEAKER 43: [uhørligt] 1197 01:01:39,680 --> 01:01:44,130 ALI: Så du ønsker at krydse nummer i fra nulte smule til 1198 01:01:44,130 --> 01:01:47,840 første bit, den anden bit, den tredje bit, hele vejen til numBits. 1199 01:01:47,840 --> 01:01:50,972 Den max antal bits, som du kan komme til. 1200 01:01:54,420 --> 01:01:57,780 ROB: Hvad er den fælles loop vi bruger det, vi ønsker at gøre noget x gange? 1201 01:01:57,780 --> 01:01:58,280 ALI: For. 1202 01:01:58,280 --> 01:01:59,280 Perfekt. 1203 01:01:59,280 --> 01:02:00,440 Så vi har for. 1204 01:02:00,440 --> 01:02:05,242 Og så vil vi skabe en iterator, som ikke vil være i. 1205 01:02:05,242 --> 01:02:06,850 ROB: j. 1206 01:02:06,850 --> 01:02:08,080 ALI: J = 0. 1207 01:02:08,080 --> 01:02:09,740 Så vi vil starte ved 0. 1208 01:02:09,740 --> 01:02:13,110 Og så er vi nødt til betingelsen for at sikre, mens du er 1209 01:02:13,110 --> 01:02:14,968 går igennem det hver eneste gang - 1210 01:02:14,968 --> 01:02:16,960 [Indskyde STEMMER] 1211 01:02:16,960 --> 01:02:17,960 ROB: j. 1212 01:02:17,960 --> 01:02:19,970 ALI: j er mindre end numBits. 1213 01:02:19,970 --> 01:02:23,680 Så vi ønsker ikke at gøre det faktiske lig med en, fordi de er numBits 1214 01:02:23,680 --> 01:02:25,365 alt, og vi starter ved 0. 1215 01:02:25,365 --> 01:02:26,360 Så vi er faktisk nødt til - 1216 01:02:26,360 --> 01:02:27,400 SPEAKER 44: Oh. 1217 01:02:27,400 --> 01:02:29,300 ALI: Indeksene slutter ikke ved numBits minus 1. 1218 01:02:29,300 --> 01:02:34,070 ROB: Vi mærke de bits 0 til 31, vi ikke mærke dem 1 til 32. 1219 01:02:34,070 --> 01:02:36,970 ALI: Og så vil vi forøge hver gang efter en, fordi vi ønsker at 1220 01:02:36,970 --> 01:02:38,050 kontrollere hver enkelt. 1221 01:02:38,050 --> 01:02:39,851 Så vi vil gå j + +. 1222 01:02:39,851 --> 01:02:42,740 >> SPEAKER 45: Hvorfor gør du det? 1223 01:02:42,740 --> 01:02:46,100 SPEAKER 46: Hvorfor er du går igennem hver bit? 1224 01:02:46,100 --> 01:02:49,310 ROB: Så vi ønsker at gå igennem hver eneste bit og - 1225 01:02:52,780 --> 01:02:55,100 Så lad os sige, at vi har nogle tal. 1226 01:02:55,100 --> 01:02:56,195 ALI: 68. 1227 01:02:56,195 --> 01:02:57,470 ROB: Vi kan bruge 68. 1228 01:02:57,470 --> 01:03:00,450 Så den binære kommer til at være 100.100. 1229 01:03:00,450 --> 01:03:05,540 Så dette er inde i jeg, og vi ønsker at gå over hver af disse bits. 1230 01:03:05,540 --> 01:03:06,450 Er det en 1? 1231 01:03:06,450 --> 01:03:07,320 Print 1. 1232 01:03:07,320 --> 01:03:08,120 Er det en 0? 1233 01:03:08,120 --> 01:03:09,100 Udskriv 0. 1234 01:03:09,100 --> 01:03:10,530 Så går vi videre til næste bit. 1235 01:03:10,530 --> 01:03:11,210 Er det en 1? 1236 01:03:11,210 --> 01:03:11,610 Print 1. 1237 01:03:11,610 --> 01:03:11,830 Er en 0? 1238 01:03:11,830 --> 01:03:13,080 Udskriv 0. 1239 01:03:14,880 --> 01:03:16,710 ALI: Cool, okay. 1240 01:03:16,710 --> 01:03:22,880 Nu er vi ved det rigtige indeks for, hvor denne bit er. 1241 01:03:25,380 --> 01:03:28,080 Hvordan kan vi kontrollere, at særlige en? 1242 01:03:28,080 --> 01:03:33,130 Lad os sige, at vi er på j = 0, så vi ønsker at kontrollere 0 indeks for den smule. 1243 01:03:33,130 --> 01:03:37,980 Så i dette tilfælde,. Denne ene 1244 01:03:37,980 --> 01:03:41,930 >> Så nu hvordan kan vi gå om check - oh, det ville være denne. 1245 01:03:41,930 --> 01:03:42,810 ROB: Yeah. 1246 01:03:42,810 --> 01:03:44,310 ALI: Undskyld. 1247 01:03:44,310 --> 01:03:47,930 Hvordan ville vi gå om kontrol, at man i en vis forstand? 1248 01:03:47,930 --> 01:03:52,030 Hvordan ville vi se, om det er et 0 eller et 1? 1249 01:03:52,030 --> 01:03:52,730 Well let's - 1250 01:03:52,730 --> 01:03:53,940 KLASSE: Og 1? 1251 01:03:53,940 --> 01:03:54,390 ALI: Og? 1252 01:03:54,390 --> 01:03:55,010 Yeah. 1253 01:03:55,010 --> 01:03:57,810 ROB: Så lad os sige, at vi allerede har 1. 1254 01:03:57,810 --> 01:04:02,470 Så er dette &, vil dette vende tilbage, om det var et 1 eller et 0. 1255 01:04:05,580 --> 01:04:08,200 ALI: Så vi kan gå ned. 1256 01:04:08,200 --> 01:04:10,695 Og vi kan gøre, som du fyre sagde, at gøre det & funktion. 1257 01:04:13,810 --> 01:04:15,560 ROB: int - 1258 01:04:15,560 --> 01:04:18,290 hvordan skal jeg ønsker at sige dette - 1259 01:04:18,290 --> 01:04:24,250 isOne = i. 1260 01:04:24,250 --> 01:04:29,770 Og for første bit vi tilfældigvis til at se på, vi laver i & 1. 1261 01:04:29,770 --> 01:04:33,302 Nu, hvad skal vi ønsker at & ved for anden bit? 1262 01:04:33,302 --> 01:04:34,294 SPEAKER 47: 2. 1263 01:04:34,294 --> 01:04:36,110 ROB: Ja, det andet, at vi er på 2. 1264 01:04:36,110 --> 01:04:39,100 ALI: Du vil bemærke, at 1 har flyttet over til den venstre. 1265 01:04:39,100 --> 01:04:44,320 Så har vi lært nogen bitvise operatører til at gøre denne funktion? 1266 01:04:44,320 --> 01:04:45,160 ROB: Den næste - 1267 01:04:45,160 --> 01:04:46,280 ALI: Yeah, right, præcis. 1268 01:04:46,280 --> 01:04:48,670 Så det er en venstre skift. 1269 01:04:48,670 --> 01:04:51,120 I stedet for altid at kontrollere med 1, vi kommer til at flytte det. 1270 01:04:51,120 --> 01:04:53,470 Og hvor mange gange skal vi flytte den? 1271 01:04:53,470 --> 01:04:59,340 Hvis vi tjekker den nulte man så vil vi flytte det over nul. 1272 01:04:59,340 --> 01:04:59,975 Ja, præcis. 1273 01:04:59,975 --> 01:05:02,090 Så du forlod flytte det ved j. 1274 01:05:02,090 --> 01:05:02,550 Perfekt. 1275 01:05:02,550 --> 01:05:03,550 Så nu ved vi - 1276 01:05:03,550 --> 01:05:06,450 vi har denne int af, hvis det er 1, og derefter - 1277 01:05:10,690 --> 01:05:14,670 så Robs slags snyd her - 1278 01:05:14,670 --> 01:05:18,090 og så nu han gik videre og han siger bare, at hvis det rent faktisk er 1, 1279 01:05:18,090 --> 01:05:23,540 fordi 1 evalueres til sand, så vi ikke behøver at sige ISF isOne lig med 1 - 1280 01:05:23,540 --> 01:05:29,210 så hvis isOne, så vi udskriver 1, og ellers kan vi printe 0. 1281 01:05:29,210 --> 01:05:33,350 >> ROB: Så vores program har en samlet bug. 1282 01:05:33,350 --> 01:05:35,845 Nå, spørgsmål om dette først. 1283 01:05:35,845 --> 01:05:41,692 SPEAKER 48: Kan du nogensinde sætte isOne inde i fire operation del og 1284 01:05:41,692 --> 01:05:47,804 så har det flytte sig som den sidste del? 1285 01:05:47,804 --> 01:05:50,050 Så isOne svarer til 1 og derefter - 1286 01:05:50,050 --> 01:05:53,140 ROB: Ja, du kan. 1287 01:05:53,140 --> 01:05:57,200 Vi kan faktisk vise, at når vi lave den fejl, at jeg er ved at 1288 01:05:57,200 --> 01:06:00,050 diskutere med jer alle. 1289 01:06:00,050 --> 01:06:03,470 Bemærk den rækkefølge, vi skal over ting. 1290 01:06:03,470 --> 01:06:10,570 I betragtning af denne binære repræsentation, er vi starter med den nulte bit. 1291 01:06:10,570 --> 01:06:13,010 Hvis det er et 0, så vi udskriver - 1292 01:06:13,010 --> 01:06:15,620 godt, det er et 0, så vi udskriver 0. 1293 01:06:15,620 --> 01:06:16,860 Så går vi til den anden bit. 1294 01:06:16,860 --> 01:06:19,100 Det er et 0, så vi udskriver 0. 1295 01:06:19,100 --> 01:06:20,290 Så går vi til den tredje bit. 1296 01:06:20,290 --> 01:06:22,950 Det er en 1, så vi udskriver 1. 1297 01:06:22,950 --> 01:06:24,580 ALI: Så det går baglæns. 1298 01:06:24,580 --> 01:06:27,906 Så hvordan tror du fyre foreslår, at vi ordne og gå den anden vej? 1299 01:06:27,906 --> 01:06:28,900 SPEAKER 49: [uhørligt] 1300 01:06:28,900 --> 01:06:29,490 ROB: Yeah. 1301 01:06:29,490 --> 01:06:34,500 Så i stedet for at gå fra 0 til numBits, vil vi gå fra numBits bits til 0. 1302 01:06:34,500 --> 01:06:35,600 ALI: Så [uhørligt] 1303 01:06:35,600 --> 01:06:36,940 kan altid gå den anden vej. 1304 01:06:36,940 --> 01:06:38,970 ROB: NumBits minus 1, fordi det er den sidste nubmer - 1305 01:06:38,970 --> 01:06:41,160 ALI: Fordi det går fra 0 til 31. 1306 01:06:41,160 --> 01:06:44,420 Og så vil vi altid sørge for, at det er større end 0, så du ikke går 1307 01:06:44,420 --> 01:06:46,100 for langt til højre. 1308 01:06:46,100 --> 01:06:48,800 Og så vil du altid trække med 1 til at gå til højre. 1309 01:06:48,800 --> 01:06:52,240 >> ROB: Så nu har vi en omvendt sløjfe, og antallet er tilbage i udskrivning 1310 01:06:52,240 --> 01:06:53,586 på den rigtige måde. 1311 01:06:53,586 --> 01:06:57,560 SPEAKER 50: Har du ikke nødt til at ændre skift ting også? 1312 01:06:57,560 --> 01:06:58,810 ALI: Så nej. 1313 01:07:03,810 --> 01:07:06,470 ROB: Vi laver nøjagtig de samme funktioner, bortset nu 1314 01:07:06,470 --> 01:07:07,470 i omvendt rækkefølge. 1315 01:07:07,470 --> 01:07:14,170 Så i stedet for at gøre det skiftende ved numBits minus 1 for at få, hvad dette 1316 01:07:14,170 --> 01:07:17,430 bit er, i stedet for at gøre det sidste, vil vi bare gøre det først. 1317 01:07:19,970 --> 01:07:22,970 Ved at vende dette op her, omvendt vi rækkefølgen af ​​alt 1318 01:07:22,970 --> 01:07:24,190 det sker indeni. 1319 01:07:24,190 --> 01:07:28,610 Men vi ønsker ikke at ændre hvad der sker inde på alle. 1320 01:07:28,610 --> 01:07:29,860 ALI: Giver det mening? 1321 01:07:32,240 --> 01:07:33,660 Behandling? 1322 01:07:33,660 --> 01:07:41,200 Okay, er så nogen andre har nogen andre begrebsmæssige spørgsmål? 1323 01:07:41,200 --> 01:07:45,030 ALI: Før vi går ind i hans punkt, som er - 1324 01:07:45,030 --> 01:07:46,280 ALI: Okay, godt gå. 1325 01:07:48,350 --> 01:07:53,160 Rob: I stedet for at bruge j at være vores - 1326 01:07:55,780 --> 01:08:00,550 stedet for at bruge j til altid skifte med, ligesom en venstre skift j, tror jeg, hvad 1327 01:08:00,550 --> 01:08:04,120 du siger er ligesom, at j bruge sig selv. 1328 01:08:04,120 --> 01:08:09,560 Så for j - 1329 01:08:09,560 --> 01:08:14,656 Jeg tror det er den hårde - j = 1 << 31. 1330 01:08:14,656 --> 01:08:16,200 Er det, hvad jeg vil? 1331 01:08:16,200 --> 01:08:18,470 Jeg tror, ​​det er << 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 så nu i stedet for at bruge - 1335 01:08:35,620 --> 01:08:38,370 ALI: Du konstant bevægelse j stedet for at have en 1336 01:08:38,370 --> 01:08:40,520 indeks til at kontrollere det. 1337 01:08:40,520 --> 01:08:42,130 Det er ikke så slemt. 1338 01:08:42,130 --> 01:08:43,960 Vi bruger en lignende form for logik. 1339 01:08:43,960 --> 01:08:46,202 Så hvis du går tilbage - 1340 01:08:46,202 --> 01:08:50,020 oh, men det kommer til at miste det. 1341 01:08:50,020 --> 01:08:51,380 Okay, du er bare at skrive det igen. 1342 01:08:51,380 --> 01:08:56,880 Hvis du opdager, at vi har 1 << j antal gange, og vi var 1343 01:08:56,880 --> 01:09:02,279 forøgelse j hver eneste gang ved et trin, men denne gang i stedet 1344 01:09:02,279 --> 01:09:06,010 de laver tilvæksten af ​​j øverst inde i for-løkken. 1345 01:09:06,010 --> 01:09:10,890 Så i stedet for altid at flytte det ned - 1346 01:09:10,890 --> 01:09:15,220 ROB: Den allerførste iteration af for-løkken, vi har j er 10000. 1347 01:09:15,220 --> 01:09:20,000 Den næste iteration af for-løkken er 01.000. 1348 01:09:20,000 --> 01:09:22,380 Den næste iteration er, at. 1349 01:09:22,380 --> 01:09:26,800 Og 1 er bare at holde formerings ned, indtil vi ramte den meget 1350 01:09:26,800 --> 01:09:29,729 ende, hvor nu er det her. 1351 01:09:29,729 --> 01:09:33,990 Det næste, er en kommer til at blive skubbet ud, og j er ikke længere større 1352 01:09:33,990 --> 01:09:35,090 end eller lig med en. 1353 01:09:35,090 --> 01:09:38,380 Jeg kunne også sætte større end 0, samme forskel. 1354 01:09:38,380 --> 01:09:41,580 Og så det er det. 1355 01:09:41,580 --> 01:09:43,720 Spørgsmål? 1356 01:09:43,720 --> 01:09:44,760 Yeah. 1357 01:09:44,760 --> 01:09:49,740 >> SPEAKER 51: [uhørligt] 1358 01:09:49,740 --> 01:09:51,729 ROB: Så det er det samme som - 1359 01:09:51,729 --> 01:09:57,270 har du set j + = 3? 1360 01:09:57,270 --> 01:10:00,960 Så det er det samme som j = j + 3? 1361 01:10:00,960 --> 01:10:05,560 Du kan gøre det for stort set alle erhvervsdrivende i C. Så j >> = 3 er 1362 01:10:05,560 --> 01:10:10,490 lig med j = j >> 3. 1363 01:10:13,980 --> 01:10:16,760 Så det virker også med bitvise operatører. 1364 01:10:16,760 --> 01:10:19,630 Og jeg skulle ikke have sat 31 her. 1365 01:10:19,630 --> 01:10:23,790 Jeg burde have sat numBits - 1. 1366 01:10:23,790 --> 01:10:25,380 ALI: Yay, ingen magiske tal. 1367 01:10:25,380 --> 01:10:29,070 Okay, det er 4:00, så hvis du fyre nødt til at gå - men giver det mening? 1368 01:10:29,070 --> 01:10:30,320 Tror du fyre har andre spørgsmål? 1369 01:10:33,920 --> 01:10:38,470 ROB: Jeg blev også vil smide i, at hvis vi ønskede - 1370 01:10:38,470 --> 01:10:41,326 har han diskuteret ternære operatør på alle? 1371 01:10:41,326 --> 01:10:42,730 ALI: Nej. 1372 01:10:42,730 --> 01:10:45,090 Det er okay. 1373 01:10:45,090 --> 01:10:46,970 ROB: Så du kan se på det til næste gang. 1374 01:10:51,030 --> 01:10:52,080 ALI: Okay, virkelig? 1375 01:10:52,080 --> 01:10:53,150 Nu er du bare vise frem. 1376 01:10:53,150 --> 01:10:54,210 ROB: Nej, nu det er - 1377 01:10:54,210 --> 01:11:00,490 Dette er, hvad får folk interesseret, og nu vil de gå kigge ind i den. 1378 01:11:00,490 --> 01:11:02,640 Så nu, der gør det samme, i én arbejdsgang. 1379 01:11:05,150 --> 01:11:10,950 Så først kontrollere, er I & j 1? 1380 01:11:10,950 --> 01:11:12,530 Er det sandt? 1381 01:11:12,530 --> 01:11:17,000 Hvis det er tilfældet, udskrive en 1, andet, udskrive en 0. 1382 01:11:17,000 --> 01:11:19,190 ALI: Men gør det på den anden måde er helt fint så godt. 1383 01:11:19,190 --> 01:11:20,920 Det har den samme logik. 1384 01:11:20,920 --> 01:11:22,730 Så det er ikke ligesom man er - 1385 01:11:22,730 --> 01:11:24,620 ROB: På dette punkt kan vi slippe af med de krøllede parenteser, fordi det er kun 1386 01:11:24,620 --> 01:11:27,190 en one-line til loop. 1387 01:11:27,190 --> 01:11:29,370 ALI: Okay, er så det mening? 1388 01:11:29,370 --> 01:11:30,370 Det var lidt af et spring. 1389 01:11:30,370 --> 01:11:34,870 Men det var bare lidt syntaks, så mere. 1390 01:11:34,870 --> 01:11:36,250 >> Cool? 1391 01:11:36,250 --> 01:11:37,500 Andre spørgsmål? 1392 01:11:40,880 --> 01:11:41,570 ROB: Okay. 1393 01:11:41,570 --> 01:11:42,310 ALI: Okay, cool. 1394 01:11:42,310 --> 01:11:43,560 Tak for at komme til afsnittet.