1 00:00:01,984 --> 00:00:07,450 [Powered by Google Translate] [Elektroniczny STATIC SOUNDS] 2 00:00:07,450 --> 00:00:11,320 ROB: Ok, więc co my właśnie przywiózł cię do jest CS50 Spaces. 3 00:00:11,320 --> 00:00:12,325 ALI: Czekaj, czekaj z powrotem. 4 00:00:12,325 --> 00:00:13,175 Witamy w dziale! 5 00:00:13,175 --> 00:00:13,860 ROB: Witamy w dziale! 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: Jestem Ali i to jest Rob. 9 00:00:18,610 --> 00:00:20,680 Dobra, teraz wyjaśnimy Spaces. 10 00:00:20,680 --> 00:00:23,650 ROB: To co właśnie przyniósł cię do jest CS50 Spaces. 11 00:00:23,650 --> 00:00:29,260 Będziesz za pomocą tego dużo w waszych sekcjach tego semestru. 12 00:00:29,260 --> 00:00:32,110 Zasadniczo, mamy już pobrać do urządzenia. 13 00:00:32,110 --> 00:00:38,630 A może myślisz o CS50 Spaces jako interfejs WWW rozmawia urządzenia 14 00:00:38,630 --> 00:00:40,670 że mamy na jakimś serwerze gdzieś. 15 00:00:40,670 --> 00:00:42,990 Więc można uruchomić kod w tym interfejsie, a my będziemy 16 00:00:42,990 --> 00:00:44,180 zobaczyć, jak coś zrobić. 17 00:00:44,180 --> 00:00:48,200 Można też spojrzeć na kod innych osób w dziale, a także - 18 00:00:48,200 --> 00:00:51,920 ALI: I jak niektórzy ludzie odkryli, można rozmawiać ludzi na boku. 19 00:00:51,920 --> 00:00:54,230 A my wszyscy to widzę, zbyt, więc to ekscytujące. 20 00:00:54,230 --> 00:00:55,655 Chodź, chodź i usiądź. 21 00:00:55,655 --> 00:00:57,060 Usiądź. 22 00:00:57,060 --> 00:00:57,840 >> ROB: Tak, sekcje - 23 00:00:57,840 --> 00:00:59,380 ALI: Nie, nie, wy możecie. 24 00:00:59,380 --> 00:01:03,356 ROB: Sekcje będą bardziej interaktywne w tym semestrze. 25 00:01:03,356 --> 00:01:04,180 ALI: Oh, on jest - 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 Więc jeśli faceci są po prostu w najbliższych, można udać się do tego linku, jeśli można uzyskać 29 00:01:15,630 --> 00:01:20,190 tam, właśnie tam. 30 00:01:20,190 --> 00:01:22,780 Nie możemy napisać, bo nie ma miejsca na pokładzie, ale ten link 31 00:01:22,780 --> 00:01:27,160 tu, idź do tej, na komputerach, a wejdziesz CS50 32 00:01:27,160 --> 00:01:29,810 Obowiązuje, co jest całkiem fajne. 33 00:01:32,460 --> 00:01:33,830 Okay. 34 00:01:33,830 --> 00:01:35,370 Czy masz jakiś problem? 35 00:01:35,370 --> 00:01:39,930 ROB: Tak można znaleźć problemy - 36 00:01:39,930 --> 00:01:42,720 Musimy być w stanie napisać to gdzieś. 37 00:01:42,720 --> 00:01:50,040 Więc jeśli pójdziesz do cs50.net/psets i to supersection hacker - 38 00:01:50,040 --> 00:01:55,870 i przejść do edycji Hacker z Pset jeden, patrzeć na specyfikacji 39 00:01:55,870 --> 00:01:57,620 gdzieś na stronie - 40 00:02:01,940 --> 00:02:04,280 >> ALI: Więc w zasadzie, podczas gdy Rob patrząc, co będziemy robić w 41 00:02:04,280 --> 00:02:06,650 sekcja jest dziś nie część problemów - 42 00:02:06,650 --> 00:02:07,600 ROB: - na stronie ósmej. 43 00:02:07,600 --> 00:02:09,300 ALI: - zwana część problemów - 44 00:02:09,300 --> 00:02:10,280 ROB: Sekcja pytań. 45 00:02:10,280 --> 00:02:11,630 ALI: Niestety, część pytań. 46 00:02:11,630 --> 00:02:14,450 A to, co mamy zamiar iść na - 47 00:02:14,450 --> 00:02:16,370 są to, co mamy zamiar iść na dziś w sekcji. 48 00:02:16,370 --> 00:02:20,010 I będziemy kodować go na CS50 Spaces, i miejmy nadzieję, że będzie działać. 49 00:02:20,010 --> 00:02:22,210 I możemy po prostu porozmawiać przez nich. 50 00:02:22,210 --> 00:02:24,510 A wy może zadawać pytania, gdy czujesz - 51 00:02:24,510 --> 00:02:27,890 >> ROB: Tak to zaczyna być coś wspólnego z większością psets. 52 00:02:27,890 --> 00:02:31,000 Myślę, że z tym jednym, to mówi, nie musisz oddać te pytania w. 53 00:02:31,000 --> 00:02:36,780 Ale idea jest taka, że ​​te pytania są wprowadzane na PSET i można przyjść 54 00:02:36,780 --> 00:02:39,790 do sekcji, aby na te pytania odpowiedzieć. 55 00:02:39,790 --> 00:02:42,730 Albo, jeśli nie są do sekcji, możesz odebrać je samodzielnie lub uzyskać 56 00:02:42,730 --> 00:02:44,250 Pomoc w godzinach pracy urzędu, czy coś takiego. 57 00:02:44,250 --> 00:02:47,540 Ale są to kwestie, które powinny prep za zestaw problemów. 58 00:02:47,540 --> 00:02:50,910 A na wydanie hakerów, wiele z tych pytań może być tylko o 59 00:02:50,910 --> 00:02:54,170 rozszerza swoją aktualną wiedzę CS. 60 00:02:54,170 --> 00:02:55,370 ALI: Tak, bardzo dużo. 61 00:02:55,370 --> 00:02:57,950 >> Ok, tak, to wszyscy na CS50 Spaces? 62 00:02:57,950 --> 00:02:59,457 Cześć, wejdźcie 63 00:02:59,457 --> 00:03:00,828 SPEAKER 1: Czy możemy zobaczyć adres URL jeszcze raz? 64 00:03:04,030 --> 00:03:07,000 Rob: Tak, to będzie łatwiejsze, gdy są faktycznie w swoich sekcjach, a 65 00:03:07,000 --> 00:03:10,760 Twój TF tylko może wysłać Ci URL wcześniej. 66 00:03:10,760 --> 00:03:11,870 ALI: Yay, usiądź. 67 00:03:11,870 --> 00:03:13,170 Istnieją miejsca tutaj. 68 00:03:13,170 --> 00:03:14,420 Przód nie jest tak źle. 69 00:03:17,112 --> 00:03:18,362 Co? 70 00:03:20,650 --> 00:03:23,590 Więc, CS50 Spaces, mamy się tam dostać. 71 00:03:23,590 --> 00:03:26,760 Czy ktoś ma jakieś pytania, zanim przejdziemy do - co? 72 00:03:26,760 --> 00:03:28,060 ROB: Nie ma jeszcze żadnych kreda. 73 00:03:28,060 --> 00:03:29,270 [Niesłyszalne] 74 00:03:29,270 --> 00:03:31,540 ALI: Przepraszam. 75 00:03:31,540 --> 00:03:32,950 Można użyć paznokcie? 76 00:03:32,950 --> 00:03:38,210 Jesteśmy w bardzo low-tech pokoju za bardzo high-tech klasy. 77 00:03:38,210 --> 00:03:40,795 Ok, jest trochę każdy z dobrym? 78 00:03:40,795 --> 00:03:44,310 Czy ktoś ma wciąż pytania na ten temat? 79 00:03:44,310 --> 00:03:48,540 Jak powiedziałem wcześniej, będziemy przechodzić przez części pytań w 80 00:03:48,540 --> 00:03:51,340 specyfikacje PSET. 81 00:03:51,340 --> 00:03:53,490 Więc jest tylko kilka problemów, które mamy zamiar 82 00:03:53,490 --> 00:03:57,490 zakodować w CS50 Spaces. 83 00:03:57,490 --> 00:03:58,740 Czy wszyscy są dobre? 84 00:04:01,010 --> 00:04:01,360 Okay. 85 00:04:01,360 --> 00:04:02,312 Dobry? 86 00:04:02,312 --> 00:04:04,260 ROB: Czy masz laptopa? 87 00:04:04,260 --> 00:04:05,150 ALI: Można bawić się z Lucasem. 88 00:04:05,150 --> 00:04:06,960 On siedzi obok ciebie. 89 00:04:06,960 --> 00:04:10,030 Czas wiązania. 90 00:04:10,030 --> 00:04:10,990 >> ROB: Tak, zacznij od pierwszego problemu? 91 00:04:10,990 --> 00:04:11,260 ALI: Tak. 92 00:04:11,260 --> 00:04:11,820 Możemy zacząć. 93 00:04:11,820 --> 00:04:12,390 Chcesz mnie - 94 00:04:12,390 --> 00:04:13,700 Mogę iść. 95 00:04:13,700 --> 00:04:16,666 Więc idziemy do specyfikacji PSET. 96 00:04:16,666 --> 00:04:17,640 Oh, to dlaczego - 97 00:04:17,640 --> 00:04:18,890 ROB: Control. 98 00:04:21,769 --> 00:04:25,770 ALI: Dobra, więc jedziemy do odpowiedzi te rzeczy, jak również? 99 00:04:25,770 --> 00:04:26,190 ROB: Oh, yeah. 100 00:04:26,190 --> 00:04:27,280 So - 101 00:04:27,280 --> 00:04:29,675 ALI: Oh, wszyscy się obserwacją Roba spodenki z udziałem? 102 00:04:32,430 --> 00:04:33,360 Okay, cool. 103 00:04:33,360 --> 00:04:36,870 ROB: Tak, ja nie sądzę, że muszą oczekiwać, aby mieć 104 00:04:36,870 --> 00:04:40,650 Oglądałem go przed wejściem do tej sekcji, ale możemy omawiać tych 105 00:04:40,650 --> 00:04:43,870 problemy wcześniej, ponieważ są one w sekcji pytań rzeczy. 106 00:04:43,870 --> 00:04:46,480 Więc jeśli nie obserwował go, nie martw się. 107 00:04:46,480 --> 00:04:48,630 Ci, którzy mogą spróbować odpowiedzieć. 108 00:04:48,630 --> 00:04:53,875 >> Więc pierwsze pytanie, co to jest pre-procesor, w jaki sposób: # include 109 00:04:53,875 --> 00:04:56,080 odnoszą? 110 00:04:56,080 --> 00:04:58,440 Więc czy ktoś ma odpowiedzi na to? 111 00:04:58,440 --> 00:04:59,320 Ali: Macie może mówić to. 112 00:04:59,320 --> 00:05:00,308 Jasne, śmiało. 113 00:05:00,308 --> 00:05:03,766 SPEAKER 2: # include pewne pre-napisany kod, a zamiast 114 00:05:03,766 --> 00:05:08,706 kopiowanie i wklejanie go w programie, po prostu mówiąc, m.in. to, 115 00:05:08,706 --> 00:05:14,140 pre-procesor wie, że tam jest i że powinien dodać go w 116 00:05:14,140 --> 00:05:17,520 później lub wcześniej nic się nie dzieje. 117 00:05:17,520 --> 00:05:18,466 ALI: Tak, super. 118 00:05:18,466 --> 00:05:19,440 Cool. 119 00:05:19,440 --> 00:05:23,820 ROB: Tak, gdy jesteś rzeczywiście kompilacji programu, pre-processor jest to 120 00:05:23,820 --> 00:05:25,230 pierwszy krok. 121 00:05:25,230 --> 00:05:27,620 Kompilacja odbywa się w czterech dużych kroków. 122 00:05:27,620 --> 00:05:31,120 Tak pre-processor jest pierwszy duży, i to jest ten facet, który idzie 123 00:05:31,120 --> 00:05:33,510 przez i wygląda dla wszystkich tych mieszania symboli. 124 00:05:33,510 --> 00:05:36,610 I każda linia, która zaczyna się od skrótu, pre-procesor patrzy na to i widzi 125 00:05:36,610 --> 00:05:37,880 jeśli można go przetworzyć. 126 00:05:37,880 --> 00:05:43,800 Tak # include mówi pre-procesor szukać jakiegoś cs50.h 127 00:05:43,800 --> 00:05:47,830 pliku i po prostu skopiować i wkleić jego zawartość do tego pliku. 128 00:05:47,830 --> 00:05:50,970 Tak naprawdę można # include cokolwiek chcesz, ale to w większości będzie 129 00:05:50,970 --> 00:05:53,700 Pliki. Godz. 130 00:05:53,700 --> 00:05:55,820 Nie dostał się do # zdefiniować jeszcze, więc to nie ma znaczenia. 131 00:05:55,820 --> 00:05:57,620 ALI: Tak, jesteśmy dobrzy w tym jednym. 132 00:05:57,620 --> 00:05:59,450 Czy ktoś ma jakieś pytania dotyczące tego? 133 00:05:59,450 --> 00:06:01,090 Czy mamy dobre? 134 00:06:01,090 --> 00:06:02,430 Następne pytanie. 135 00:06:02,430 --> 00:06:07,096 >> SPEAKER 3: W skrócie, było coś o c, jak również.? 136 00:06:07,096 --> 00:06:09,110 Jakie to ma znaczenie, czy jest to bez znaczenia? 137 00:06:09,110 --> 00:06:11,210 ROB: O C z pre-procesor.? 138 00:06:11,210 --> 00:06:13,990 SPEAKER 3: Tak, albo ja coś wymyślić? 139 00:06:13,990 --> 00:06:18,290 ROB: Tak krótko można było pokazywanie wstępnie przetwarza ten plik i 140 00:06:18,290 --> 00:06:24,240 . wyprowadzanie go do innego pliku C, dzięki czemu można wstępnie przetworzyć ten plik - 141 00:06:24,240 --> 00:06:30,000 kiedy po prostu biec jak, zrobić cześć lub hello.c dzyń, robisz wszystko 142 00:06:30,000 --> 00:06:31,730 Kompilacja w jednym dużym kroku. 143 00:06:31,730 --> 00:06:34,780 Ale można to zrobić bezpośrednio w swoich oddzielnych etapach. 144 00:06:34,780 --> 00:06:36,950 Tak więc najpierw można wstępnie przetworzyć. 145 00:06:36,950 --> 00:06:42,260 Następnie można skompilować, a następnie można zebrać, a następnie można połączyć. 146 00:06:42,260 --> 00:06:43,620 Dojdziemy do tych pozostałych. 147 00:06:43,620 --> 00:06:47,410 Ale wstępne przetwarzanie, to rodzaj wstępnej procesu, a następnie przechodzi do 148 00:06:47,410 --> 00:06:49,270 inny plik. c. 149 00:06:49,270 --> 00:06:51,430 Ponieważ wstępne przetwarzanie naprawdę nie zmienia niczego. 150 00:06:51,430 --> 00:06:52,800 To tylko kilka kopii i wklejanie. 151 00:06:52,800 --> 00:06:56,760 Można ręcznie skopiować i wkleić go samodzielnie. 152 00:06:56,760 --> 00:06:59,630 ALI:. I stało się jasne, że plik c jest plik C, więc jest to 153 00:06:59,630 --> 00:07:00,930 w kodzie C. 154 00:07:00,930 --> 00:07:03,300 Tak to się dzieje z kodu C do kodu C. 155 00:07:03,300 --> 00:07:05,210 Jesteś po prostu dodanie większej ilości kodu z funta. 156 00:07:05,210 --> 00:07:08,575 ROB: Po wstępnej obróbce to, to nadal ważny plik C. 157 00:07:08,575 --> 00:07:09,940 SPEAKER 3: Dobra. 158 00:07:09,940 --> 00:07:10,540 ALI: Dobre pytanie. 159 00:07:10,540 --> 00:07:11,370 Podoba mi się. 160 00:07:11,370 --> 00:07:12,755 Dobra, następne pytanie. 161 00:07:17,870 --> 00:07:19,660 >> Co kompilator? 162 00:07:19,660 --> 00:07:20,824 Ktokolwiek? 163 00:07:20,824 --> 00:07:21,286 Tak. 164 00:07:21,286 --> 00:07:24,650 GŁOŚNIK 4: To zmienia wstępnie przetworzonych kod do montażu. 165 00:07:24,650 --> 00:07:25,110 ALI: Perfect. 166 00:07:25,110 --> 00:07:25,390 ROB: Tak. 167 00:07:25,390 --> 00:07:25,720 ALI: Cool. 168 00:07:25,720 --> 00:07:28,270 ROB: Więc to, co kompilator robi specjalnie 169 00:07:28,270 --> 00:07:30,740 kiedy używamy szczęk. 170 00:07:30,740 --> 00:07:35,100 W sensie bardzo ogólnym, kompilator jest jak biorąc kod w jednym języku 171 00:07:35,100 --> 00:07:37,070 i zamieniając go w innym języku. 172 00:07:37,070 --> 00:07:38,370 Więc w C - 173 00:07:38,370 --> 00:07:43,750 czy dobrze, Clang bierze kod jest w C i przekształcenie go do zespołu. 174 00:07:43,750 --> 00:07:46,560 I nie muszą być w stanie zrozumieć zespół w ogóle. 175 00:07:46,560 --> 00:07:49,830 Ale to jest język, to zamieniając je. 176 00:07:49,830 --> 00:07:50,230 >> ALI: Dobra. 177 00:07:50,230 --> 00:07:52,920 A potem, co to assembler? 178 00:07:52,920 --> 00:07:54,270 Ktokolwiek? 179 00:07:54,270 --> 00:07:56,810 GŁOŚNIK 5: [niesłyszalne] binarny? 180 00:07:56,810 --> 00:07:57,260 ALI: Przepraszam, co? 181 00:07:57,260 --> 00:07:58,760 GŁOŚNIK 5: [niesłyszalne] binarny? 182 00:07:58,760 --> 00:07:59,260 ROB: Tak. 183 00:07:59,260 --> 00:07:59,880 ALI: Tak. 184 00:07:59,880 --> 00:08:01,960 ROB: Tak assembler - 185 00:08:01,960 --> 00:08:05,830 Kod montaż jest naprawdę blisko tego, co komputer może zrozumieć, 186 00:08:05,830 --> 00:08:09,390 ale pamiętaj, że nie bardzo rozumiem tekst 187 00:08:09,390 --> 00:08:10,630 to jest kod montaż. 188 00:08:10,630 --> 00:08:14,570 Musisz przekonwertować go na prostej 1s i 0s. 189 00:08:14,570 --> 00:08:17,000 To jak bezpośredniego procesu tłumaczenia. 190 00:08:17,000 --> 00:08:19,450 Moglibyśmy dać tabelę mapy, co każdy 191 00:08:19,450 --> 00:08:21,880 instrukcja montażu oznacza. 192 00:08:21,880 --> 00:08:24,340 Ale assembler jest po prostu robi to tłumaczenie dla Ciebie. 193 00:08:24,340 --> 00:08:28,790 To przekształcenie kodu assemblera na 1s i 0s. 194 00:08:28,790 --> 00:08:30,870 >> ALI: A potem, na ostatniej, co jest łącznikiem? 195 00:08:30,870 --> 00:08:35,070 A w jaki sposób-lcs50 odnoszą? 196 00:08:35,070 --> 00:08:37,010 Ktokolwiek? 197 00:08:37,010 --> 00:08:41,440 ROB: To jest najtrudniejsza i najmniej wyjaśnił jeden w filmie kompilatora. 198 00:08:41,440 --> 00:08:48,980 ALI: Czy ktoś pamięta z widzeniem-lcs50 w poleceniu? 199 00:08:48,980 --> 00:08:50,690 SPEAKER 6: Kiedy poszedłem do wykonania. 200 00:08:50,690 --> 00:08:51,980 ALI: Jest w make. 201 00:08:51,980 --> 00:08:55,780 Tak, cool, okay. 202 00:08:55,780 --> 00:09:02,024 Czy są jakieś domysły lub mglistych - Tak, proszę. 203 00:09:02,024 --> 00:09:06,370 SPEAKER 7: Nie jestem pewien, ponieważ był bardzo krótki [niesłyszalne], ale to było 204 00:09:06,370 --> 00:09:12,244 coś robić oddzielnych plików z każdej bibliotece, a następnie wprowadzenie 205 00:09:12,244 --> 00:09:13,620 je wszystkie razem w jednej bibliotece? 206 00:09:13,620 --> 00:09:14,400 ROB: Tak. 207 00:09:14,400 --> 00:09:23,000 Więc kiedy masz hello.c, to naprawdę prosty program. 208 00:09:23,000 --> 00:09:25,570 Naprawdę tylko to jedno w nim. 209 00:09:25,570 --> 00:09:27,400 Ale kiedy się do innych programów - 210 00:09:27,400 --> 00:09:31,700 i myślę, że nawet jeśli w swoich programach getString, trzeba zacząć 211 00:09:31,700 --> 00:09:33,830 w tym z innych plików. 212 00:09:33,830 --> 00:09:38,000 Więc biblioteka CS50 jest jeden taki plik w którym mamy implementacje 213 00:09:38,000 --> 00:09:40,750 z getString i getInt i wszystkich tych rzeczy. 214 00:09:40,750 --> 00:09:45,540 Więc co linker robi to krąży patrząc przez wszystkie te 215 00:09:45,540 --> 00:09:49,400 plików, widząc gdzie funkcje są zdefiniowane, upewniając się, że kiedy dzwonię 216 00:09:49,400 --> 00:09:52,440 GetString gdzieś, to wie, że getString oznacza, że ​​jest 217 00:09:52,440 --> 00:09:54,910 GetString przekazany w CS50 biblioteki. 218 00:09:54,910 --> 00:09:58,895 Więc linker zajmuje tylko wszystkie te pliki, rozbija je razem, a teraz 219 00:09:58,895 --> 00:10:01,020 masz plik wykonywalny. 220 00:10:01,020 --> 00:10:05,600 Pamiętaj więc, jeśli używasz CS50 bibliotekę, trzeba mieć 221 00:10:05,600 --> 00:10:10,370 # Include w górę, a następnie również w komendy make, jak ty 222 00:10:10,370 --> 00:10:12,630 powiedział, trzeba mieć-lcs50. 223 00:10:12,630 --> 00:10:15,720 Tak więc nie można po prostu mieć. 224 00:10:15,720 --> 00:10:18,294 Więc to jest po prostu coś, aby pamiętać w przyszłości. 225 00:10:18,294 --> 00:10:22,550 >> GŁOŚNIK 8: Więc, powiedzmy nie było innej biblioteki, jak cs51.h, chcielibyśmy 226 00:10:22,550 --> 00:10:26,780 również dodać-lcs51? 227 00:10:26,780 --> 00:10:32,390 ROB: Jedyny powód to-lcs50 działa idealnie, ponieważ mamy ten zestaw 228 00:10:32,390 --> 00:10:35,800 się w określonym miejscu w swoich urządzeń tak, że nie wie, co 229 00:10:35,800 --> 00:10:38,550 -Lcs50 środków. 230 00:10:38,550 --> 00:10:43,240 Moglibyśmy dać cs50.c plik, a następnie można go skompilować, mówiąc 231 00:10:43,240 --> 00:10:49,050 Clang hello.c cs50.c, a następnie, czy miałoby to plik wykonywalny, umieszczając 232 00:10:49,050 --> 00:10:50,350 te dwa pliki razem. 233 00:10:50,350 --> 00:10:56,520 Wie, że-lcs50 oznacza cs50.c przekazany jakiegoś katalogu, że określony w 234 00:10:56,520 --> 00:10:58,350 urządzenia elektryczne. 235 00:10:58,350 --> 00:11:04,290 Więc jeśli chcesz być cs51.c Definiowany przez tylko mówię-lcs51, 236 00:11:04,290 --> 00:11:06,760 wówczas musimy także umieścić go w tym katalogu, więc wie, gdzie 237 00:11:06,760 --> 00:11:08,636 szukać. 238 00:11:08,636 --> 00:11:10,510 ALI: Jakie było twoje pytanie? 239 00:11:10,510 --> 00:11:13,975 >> SPEAKER 7: Dlaczego musisz połączyć CS50 240 00:11:13,975 --> 00:11:18,940 jeśli - wasn't to skopiować / wkleić w pierwszym etapie, kiedy wstępnie przetworzonego go? 241 00:11:18,940 --> 00:11:19,700 ALI: Czy chcesz wziąć? 242 00:11:19,700 --> 00:11:20,880 ROB: Oczywiście. 243 00:11:20,880 --> 00:11:28,028 Więc cs50.h plik jest oddzielony od cs50.c pliku C. 244 00:11:28,028 --> 00:11:33,652 Masz już mogła funkcjonować w prototypy w klasie? 245 00:11:33,652 --> 00:11:34,350 Okay. 246 00:11:34,350 --> 00:11:40,255 Więc w zasadzie, jest tylko plik cs50.h zamiar skopiować i wkleić - 247 00:11:40,255 --> 00:11:44,040 ALI: Czy wiecie, co podpisy są? 248 00:11:44,040 --> 00:11:46,580 Ok, więc dość dużo, jeśli patrzeć - 249 00:11:46,580 --> 00:11:50,530 ROB: udawajmy cs50.h nie ma. 250 00:11:50,530 --> 00:11:52,960 Teraz ten plik - 251 00:11:52,960 --> 00:11:56,090 robisz getString String s =. 252 00:11:56,090 --> 00:11:59,350 Ale kiedy dotarłeś do tego miejsca w kodzie, nie ma pojęcia, co 253 00:11:59,350 --> 00:12:00,230 GetString jest. 254 00:12:00,230 --> 00:12:02,600 Wie, że jest to funkcja, ponieważ dzwonisz go. 255 00:12:02,600 --> 00:12:06,500 Ale nie wie, że to faktycznie powinien zwrócić ciąg. 256 00:12:06,500 --> 00:12:14,530 Tak jak powiedziałem, string s = getInt, to nie ma żadnego sensu, ponieważ 257 00:12:14,530 --> 00:12:17,530 logujesz integer na ciąg. 258 00:12:17,530 --> 00:12:22,270 Ale nie wie, że GetString ma sensu, ponieważ nie 259 00:12:22,270 --> 00:12:24,380 wiem, że GetString zwraca ciąg znaków. 260 00:12:24,380 --> 00:12:28,220 Więc co cs50.h mówi, że jest coś takiego. 261 00:12:33,070 --> 00:12:37,750 ALI: Więc co Rob pisze jest, to jest obietnica, w taki sposób, że to będzie 262 00:12:37,750 --> 00:12:41,280 mają tę funkcję o nazwie GetString. 263 00:12:41,280 --> 00:12:45,250 ROB: To jest wszystko, cs50.h jest kopiowanie i wklejanie tutaj, jak również 264 00:12:45,250 --> 00:12:47,620 jak getInt i wszystkich tych rzeczy. 265 00:12:47,620 --> 00:12:51,520 A to po prostu mówi, że GetString nie zwraca ciąg znaków. 266 00:12:51,520 --> 00:12:54,830 Nie wiesz, jak to jest realizowane jeszcze, ale gdy dojdziemy do tej linii, teraz 267 00:12:54,830 --> 00:12:57,760 wie, że prawidłowo zwraca ciąg znaków. 268 00:12:57,760 --> 00:13:03,022 >> GŁOŚNIK 9: Więc jeśli nie próbuj z # include rzeczy i zamiast 269 00:13:03,022 --> 00:13:07,130 tylko napisał prototyp tych, które mamy faktycznie będzie w użyciu? 270 00:13:07,130 --> 00:13:07,330 ROB: Tak. 271 00:13:07,330 --> 00:13:08,870 Więc uruchom to. 272 00:13:08,870 --> 00:13:09,110 GŁOŚNIK 9: Czy to jest? 273 00:13:09,110 --> 00:13:13,670 Więc, domyślnie to zrobić-l CS50 tylko dlatego -. 274 00:13:13,670 --> 00:13:14,740 ROB: - wyrażenie. 275 00:13:14,740 --> 00:13:19,370 ALI: Tak, bo jak powiedział, to w pliku make. 276 00:13:19,370 --> 00:13:24,040 ROB: cs50.h także dzieje się typedef char * na string. 277 00:13:24,040 --> 00:13:26,950 Można całkowicie zignorować, co to znaczy teraz. 278 00:13:26,950 --> 00:13:31,430 Ale jest też coś włączone cs50.h. 279 00:13:31,430 --> 00:13:34,230 Więc teraz wszystko działało perfekcyjnie. 280 00:13:34,230 --> 00:13:40,770 To działa dokładnie tak samo jak wtedy, gdy mieliśmy tylko 281 00:13:40,770 --> 00:13:45,120 # include. 282 00:13:45,120 --> 00:13:49,200 I tak się dzieje z tym cs50.h over-takie rzeczy trzeba - 283 00:13:49,200 --> 00:13:53,080 jak, nie używać getInt w tym programie, ale to nie ma znaczenia. 284 00:13:53,080 --> 00:13:55,010 To będzie po prostu zignorować. 285 00:13:55,010 --> 00:14:02,400 ALI: A kiedy zrobisz-lcs50 tu i tu, co się dzieje 286 00:14:02,400 --> 00:14:05,290 na to jest fakt, że ma się do wdrożenia kod rzeczywisty. 287 00:14:05,290 --> 00:14:07,530 Więc to, gdzie faktycznie jest, robi - 288 00:14:07,530 --> 00:14:09,090 pisania kodu dla getString. 289 00:14:09,090 --> 00:14:11,180 Więc to nie jest tylko obietnica już. 290 00:14:11,180 --> 00:14:16,520 To jest rzeczywiście przeżywa i biorąc łańcuch i wszystkie takie rzeczy. 291 00:14:16,520 --> 00:14:17,600 Ma sens? 292 00:14:17,600 --> 00:14:22,640 Pytania? Dobrze. 293 00:14:22,640 --> 00:14:24,466 Fajne fasola. 294 00:14:24,466 --> 00:14:27,630 >> ROB: Teraz możemy przejść do rzeczywistego kodu. 295 00:14:27,630 --> 00:14:28,780 ALI: Dobra. 296 00:14:28,780 --> 00:14:33,340 Więc tutaj jest pierwszy problem. 297 00:14:33,340 --> 00:14:36,910 Więc mówi napisać program, który pyta użytkownika o małe 298 00:14:36,910 --> 00:14:40,540 pismo, a następnie konwertuje go na duże litery bez użycia bitowe 299 00:14:40,540 --> 00:14:43,590 operacji, jak na wyjściu próbki poniżej. 300 00:14:43,590 --> 00:14:48,780 Więc widać, należy uruchomić program z. / A.out, a następnie jesteś 301 00:14:48,780 --> 00:14:53,320 zamiar umieścić w małych, a następnie Twój program powinien dać się kapitał 302 00:14:53,320 --> 00:15:00,590 A. Dlaczego więc nie macie wszystko dać mu szansę na CS50 Spaces? 303 00:15:00,590 --> 00:15:03,360 Więc wy chłopaki wszystko może udać się tutaj. 304 00:15:03,360 --> 00:15:06,650 I można usunąć cały kod tutaj. 305 00:15:06,650 --> 00:15:12,140 A potem można iść dalej i zacząć pisać rzeczy. 306 00:15:12,140 --> 00:15:14,590 ROB: Pewnie chcesz używać getchar, to jest 307 00:15:14,590 --> 00:15:16,190 zawarte w CS50 biblioteki. 308 00:15:16,190 --> 00:15:18,770 ALI: Chyba byłoby lepiej, jeśli zapiszesz górną część. 309 00:15:21,452 --> 00:15:23,805 Więc może chcesz po prostu zmienić rzeczy w środku. 310 00:15:28,710 --> 00:15:29,070 Idź przed siebie i działać. 311 00:15:29,070 --> 00:15:30,530 Tutaj do pracy ze sobą. 312 00:15:30,530 --> 00:15:32,360 Rob: A możesz zadawać pytania, jeśli masz - 313 00:15:32,360 --> 00:15:33,450 >> GŁOŚNIK 10: Co to jest operacja bitowa? 314 00:15:33,450 --> 00:15:35,100 ROB: Tak, zignorować tego problemu. 315 00:15:35,100 --> 00:15:36,330 ALI: Jeśli nie wiesz, że to dobrze. 316 00:15:36,330 --> 00:15:38,300 ROB: Mamy zamiar używać go w następnym problemem. 317 00:15:38,300 --> 00:15:40,750 Ale jeśli nie wiesz, co operatory bitowe jest to, że jest w porządku. 318 00:15:40,750 --> 00:15:43,575 GŁOŚNIK 10: Czy to jest jak włączenie go do kodu ASCII? 319 00:15:43,575 --> 00:15:44,050 ALI: No 320 00:15:44,050 --> 00:15:44,750 ROB: Nie 321 00:15:44,750 --> 00:15:46,220 Możesz to zrobić dla tego problemu. 322 00:15:46,220 --> 00:15:48,280 GŁOŚNIK 10: Jak to zrobić? 323 00:15:48,280 --> 00:15:52,460 Więc jeśli tylko miał gdzieś pisać - 324 00:15:52,460 --> 00:15:54,670 ALI: Albo coś do pisania. 325 00:15:54,670 --> 00:15:56,780 ROB: mogłem po prostu rodzaj typu do tego. 326 00:15:56,780 --> 00:15:59,045 ALI: Typ na górze. 327 00:15:59,045 --> 00:16:01,390 ROB: Oh, ja siedzę na mikrofon. 328 00:16:01,390 --> 00:16:10,860 >> Tak, widzieliśmy w wykładzie, że wartość ASCII dla kapitału wynosi 65 lat. 329 00:16:10,860 --> 00:16:13,670 Kapitału i B będą 66, i tak dalej. 330 00:16:13,670 --> 00:16:20,860 Więc można dosłownie 'a' oznacza liczbę 65. 331 00:16:20,860 --> 00:16:24,600 Jak to jest wartość 65. 332 00:16:24,600 --> 00:16:30,950 Można zrobić coś jak int x = 100 - 'A'. I teraz x będzie miała wartość 333 00:16:30,950 --> 00:16:33,810 100 - 65. 334 00:16:33,810 --> 00:16:36,708 ALI: że można uruchomić i pokazać, że. 335 00:16:36,708 --> 00:16:38,420 Och, może nie. 336 00:16:38,420 --> 00:16:38,600 Nic nie szkodzi. 337 00:16:38,600 --> 00:16:40,970 ROB: Miałem go wydrukować. 338 00:16:40,970 --> 00:16:43,730 GŁOŚNIK 10: Jak zamienić go z powrotem do postaci? 339 00:16:43,730 --> 00:16:46,800 ALI: Więc jeśli don't - 340 00:16:46,800 --> 00:16:51,450 po prostu zmusić się być char, równa. 341 00:16:51,450 --> 00:16:53,630 ROB: Tak jest - 342 00:16:53,630 --> 00:16:58,440 Rozróżnienie między char i jest liczbą całkowitą tylko pod względem wielkości. 343 00:16:58,440 --> 00:17:01,230 Tak dzieje się całkowitą stanie rzeczy stanowią 344 00:17:01,230 --> 00:17:02,600 się, jak, cztery miliardy. 345 00:17:02,600 --> 00:17:05,839 Char jest tylko w stanie reprezentować rzeczy do 255. 346 00:17:05,839 --> 00:17:08,390 Jednak nie ma różnicy między nimi inna. 347 00:17:08,390 --> 00:17:12,339 Więc można powiedzieć, char c = 65. 348 00:17:12,339 --> 00:17:24,204 To jest równoznaczne z powiedzeniem, char c równa się "A". 349 00:17:24,204 --> 00:17:25,210 ALI: Och, nie. 350 00:17:25,210 --> 00:17:26,710 Faktycznie nie zapisać rzeczy. 351 00:17:26,710 --> 00:17:28,130 ROB: Nie, nie mogę tego zrobić. 352 00:17:28,130 --> 00:17:31,610 ALI: To jest po prostu - 353 00:17:31,610 --> 00:17:34,920 [Wzdycha] 354 00:17:34,920 --> 00:17:40,700 >> ROB: Dobra, więc co Ali po prostu napisał to program, który najpierw drukuje 100 - 355 00:17:40,700 --> 00:17:46,290 "A" jako liczba całkowita, która była 35, jak oczekujemy, bo 100 minus ASCII 356 00:17:46,290 --> 00:17:48,580 wartość wynosi 65. 357 00:17:48,580 --> 00:17:54,100 Potem wydrukować za pomocą% C, co oznacza, interpretują go jako char. 358 00:17:54,100 --> 00:17:57,050 Tak 100 - wynosi 35. 359 00:17:57,050 --> 00:18:00,990 Interpretowanie że jako postać bywa hash symbol. 360 00:18:00,990 --> 00:18:06,160 Jeśli spojrzeć na asciitable.com lub cokolwiek, to zobaczysz, że 35 jest 361 00:18:06,160 --> 00:18:07,410 hash symbol. 362 00:18:09,940 --> 00:18:12,700 ALI: Okay, żadnych innych wyjaśnień na temat tego problemu? 363 00:18:16,000 --> 00:18:18,180 Dobrze, że chłopaki mogą iść do przodu i robić to wtedy. 364 00:18:18,180 --> 00:18:20,330 Zapraszam do zadawania pytań i rozmawiać ze sobą. 365 00:18:20,330 --> 00:18:24,390 Lub jeśli jesteś już zrobione, można odpocząć. 366 00:18:24,390 --> 00:18:29,640 >> LUCAS: Czy są tej samej klasy, wszystkie małe litery w kolejności i 367 00:18:29,640 --> 00:18:32,923 również wielkie są w porządku, bo to jest coś pożytecznego dla 368 00:18:32,923 --> 00:18:33,990 problem. 369 00:18:33,990 --> 00:18:35,620 ALI: Dobry punkt, Lucas. 370 00:18:35,620 --> 00:18:37,430 Tak, czy wy wszyscy się o tym? 371 00:18:37,430 --> 00:18:37,640 GŁOŚNIK 11: Tak. 372 00:18:37,640 --> 00:18:39,535 Oto jak to zrobić, prawda? 373 00:18:39,535 --> 00:18:39,960 ALI: Racja. 374 00:18:39,960 --> 00:18:40,415 ROB: Tak. 375 00:18:40,415 --> 00:18:47,270 GŁOŚNIK 11: [niesłyszalne] 376 00:18:47,270 --> 00:18:48,330 ALI: Dobrze. 377 00:18:48,330 --> 00:18:49,350 ROB: Co to jest pytanie, pytasz? 378 00:18:49,350 --> 00:18:50,590 Wystarczy do konwersji - 379 00:18:50,590 --> 00:18:52,560 ALI: Konwertuje małe litery na wielkie. 380 00:18:52,560 --> 00:18:53,100 To jest to. 381 00:18:53,100 --> 00:18:54,700 ROB: Okay. 382 00:18:54,700 --> 00:18:56,180 ALI: Czy powinniśmy napisać? 383 00:18:56,180 --> 00:18:59,340 Chyba będziemy tylko patrzeć na kogoś innego. 384 00:18:59,340 --> 00:19:07,140 ROB: Tak więc dla tych, którzy mogą być zatrzymany, sposób - 385 00:19:07,140 --> 00:19:15,160 jeśli mam trochę char c, i powiedzmy, że dzieje się litera D. 386 00:19:15,160 --> 00:19:20,760 Więc teraz, w jaki sposób można dowiedzieć się, co litera alfabetu jest C? 387 00:19:20,760 --> 00:19:25,620 Nie D, ale mam na myśli, D dzieje się czwarta litera alfabetu. 388 00:19:25,620 --> 00:19:28,910 A jeśli zaczniemy liczenie od 0, to jest to trzecia litera alfabetu. 389 00:19:28,910 --> 00:19:36,240 Więc jeśli jest 0, B 1, C 2, D 3, jak można dowiedzieć się, int pozycję - 390 00:19:36,240 --> 00:19:40,780 jakie stanowisko alfabetu C jest w? 391 00:19:40,780 --> 00:19:42,333 Czy ktoś ma jakieś pomysły? 392 00:19:42,333 --> 00:19:45,440 ALI: Myślę, że wszyscy kodowania. 393 00:19:45,440 --> 00:19:46,440 ROB: Co z pierwszego? 394 00:19:46,440 --> 00:19:48,608 GŁOŚNIK 12: Więc co jest, odejmij pierwszy? 395 00:19:48,608 --> 00:19:49,030 ROB: Tak. 396 00:19:49,030 --> 00:19:49,950 ALI: Tak, super. 397 00:19:49,950 --> 00:19:51,765 Więc można zrobić kapitałowej D - 398 00:19:51,765 --> 00:19:52,840 O, przepraszam. 399 00:19:52,840 --> 00:19:55,620 Wcielasz się w postać i odjąć pierwszy, jak pan powiedział. 400 00:19:55,620 --> 00:20:03,940 ROB: D Więc jeśli jest coś takiego jak 68, i odejmować, który jest 65, to otrzymamy 401 00:20:03,940 --> 00:20:07,130 3, mówiąc nam, że D jest trzecią literą alfabetu 402 00:20:07,130 --> 00:20:09,290 od 0. 403 00:20:09,290 --> 00:20:11,310 Więc można użyć. 404 00:20:11,310 --> 00:20:13,830 Teraz wiemy, co litera alfabetu, w kategoriach 405 00:20:13,830 --> 00:20:16,060 litery, lub - 406 00:20:16,060 --> 00:20:18,330 możemy zrobić to samo dla małych liter, aby dowiedzieć się, co 407 00:20:18,330 --> 00:20:20,170 małe miejsce, że jesteśmy w. 408 00:20:20,170 --> 00:20:25,690 I możemy używać, aby następnie przekonwertować na wielkie litery przy użyciu 409 00:20:25,690 --> 00:20:26,970 bardzo podobny pomysł. 410 00:20:31,470 --> 00:20:32,670 Zapytaj o sugestie? 411 00:20:32,670 --> 00:20:35,810 >> ALI: Czy wy - Czekaj, nie wiem, jak daleko jesteście. 412 00:20:35,810 --> 00:20:40,060 Czy większość z was zrobić, czy nadal działa, jesteś zablokowany? 413 00:20:40,060 --> 00:20:42,020 Chłopaki można krzyczeć - 414 00:20:42,020 --> 00:20:42,330 zakleszczony. 415 00:20:42,330 --> 00:20:43,210 Jedna osoba jest zakleszczony. 416 00:20:43,210 --> 00:20:43,560 Cool. 417 00:20:43,560 --> 00:20:44,700 Staram się być zatrzymany, too. 418 00:20:44,700 --> 00:20:45,415 GŁOŚNIK 13: skończę. 419 00:20:45,415 --> 00:20:46,410 ALI: Skończyłeś? 420 00:20:46,410 --> 00:20:47,480 Okay. 421 00:20:47,480 --> 00:20:47,935 Gotowe. 422 00:20:47,935 --> 00:20:49,300 GŁOŚNIK 13: [niesłyszalne] 423 00:20:49,300 --> 00:20:50,600 ALI: Tak, cool. 424 00:20:50,600 --> 00:20:53,720 Czy sprawdzanie, czy to w postaci małych liter? 425 00:20:53,720 --> 00:20:56,730 Okay, cool. 426 00:20:56,730 --> 00:20:59,882 Gdzie są inni ludzie? 427 00:20:59,882 --> 00:21:06,140 Czy ta podpowiedź pomoże, jak nie-trzymanie się? 428 00:21:06,140 --> 00:21:09,778 GŁOŚNIK 14: Nie bardzo, ale po prostu dlatego, że nie wiem, nie jestem 429 00:21:09,778 --> 00:21:11,590 strawienie go jeszcze. 430 00:21:11,590 --> 00:21:12,640 ALI: Okay, cool. 431 00:21:12,640 --> 00:21:13,431 Chcesz spróbować - 432 00:21:13,431 --> 00:21:16,140 czy chcesz iść i porozmawiać? 433 00:21:16,140 --> 00:21:18,590 >> ROB: co zamierzam powiedzieć, to - 434 00:21:18,590 --> 00:21:19,890 więc przy użyciu tego produktu. 435 00:21:19,890 --> 00:21:22,650 Czy wiesz, jak dostaliśmy to, co pozycja w alfabecie 436 00:21:22,650 --> 00:21:24,820 List jest w? 437 00:21:24,820 --> 00:21:30,616 GŁOŚNIK 14: Dobrze, więc kiedy można umieścić rzeczy w jednym cytacie, 438 00:21:30,616 --> 00:21:35,030 które zwraca numer? 439 00:21:35,030 --> 00:21:37,100 ROB: Tak. 440 00:21:37,100 --> 00:21:40,840 Zostanie on przetłumaczony na wartość ASCII reprezentuje. 441 00:21:40,840 --> 00:21:43,350 Więc chcesz, aby przejść do tabeli ASCII czy cokolwiek to jest? 442 00:21:46,456 --> 00:21:47,840 ALI: Tylko jeden z nich? 443 00:21:47,840 --> 00:21:49,970 ROB: Tak. 444 00:21:49,970 --> 00:21:55,270 Więc kiedy można umieścić każdy z tych symboli, ignorując wiele - 445 00:21:55,270 --> 00:21:56,450 ALI: [niesłyszalne] 446 00:21:56,450 --> 00:21:57,620 ROB: Oh, za pomocą kursora. 447 00:21:57,620 --> 00:21:58,380 ALI: Tak. 448 00:21:58,380 --> 00:21:59,690 To było ekscytujące. 449 00:21:59,690 --> 00:22:04,050 ROB: Tak, ignorując tych co po lewej stronie, które są specjalne symbole - 450 00:22:04,050 --> 00:22:08,520 Jeśli umieścisz dowolny z tych symboli w pojedynczych cudzysłowach, to będzie 451 00:22:08,520 --> 00:22:11,620 przeliczeniu na wartość na lewo. 452 00:22:11,620 --> 00:22:13,660 ALI: To jest liczba dziesiętna dla niego. 453 00:22:13,660 --> 00:22:19,710 To jak mecze z 65, B do 66, a zauważysz, że wszystkie one są w 454 00:22:19,710 --> 00:22:21,540 alfabetycznie, który robi różnicę. 455 00:22:21,540 --> 00:22:27,110 Tak więc, jak mówi Rob, przed, w tym kodzie, byliśmy obliczaniu odległości od 456 00:22:27,110 --> 00:22:29,610 Pierwszy list, per se. 457 00:22:29,610 --> 00:22:32,820 I to będzie to samo, czy to wielkie i małe litery. 458 00:22:32,820 --> 00:22:38,390 ROB: Więc kiedy zrobiliśmy D, 68 A, 65 minus, mamy 3. 459 00:22:38,390 --> 00:22:42,370 Ponieważ D jest trzy pozycje do alfabetu. 460 00:22:42,370 --> 00:22:46,680 ALI: Więc jak można tłumaczyć, że w ciągu znaleźć trochę d? 461 00:22:46,680 --> 00:22:47,240 ROB: Tak. 462 00:22:47,240 --> 00:22:52,230 Więc jeśli mam 3 teraz, wiem, że chcesz iść na trzy litery - 463 00:22:52,230 --> 00:22:54,830 zdarzy nam się iść małe litery teraz, ale powiedzmy, że chcę iść trzy 464 00:22:54,830 --> 00:22:58,610 Pozycje w małą strony rzeczy. 465 00:22:58,610 --> 00:23:01,400 Więc w jaki sposób można to zrobić? 466 00:23:01,400 --> 00:23:04,240 Wiem, małe jest 97. 467 00:23:04,240 --> 00:23:07,535 Więc jak mam wybrać trzy pozycje do małych liter? 468 00:23:10,461 --> 00:23:11,934 >> GŁOŚNIK 15: Mam jedno pytanie, faktycznie. 469 00:23:11,934 --> 00:23:12,425 ALI: Tak, proszę bardzo. 470 00:23:12,425 --> 00:23:14,880 GŁOŚNIK 15: Więc za to, że naprawdę nie ma znaczenia, jeśli wiem, to stanowisko, 471 00:23:14,880 --> 00:23:16,360 lubię, nie potrzebuję tej tabeli. 472 00:23:16,360 --> 00:23:16,840 ROB: Nie. 473 00:23:16,840 --> 00:23:19,380 Nigdy nie należy używać tych liczb. 474 00:23:19,380 --> 00:23:23,670 I to jest ważny punkt w swoich programach, że nigdy nie powinno się mocno 475 00:23:23,670 --> 00:23:25,500 kod któregokolwiek z tych stałych. 476 00:23:25,500 --> 00:23:31,190 'A'. nigdy nie używaj 65 lub 97. 477 00:23:31,190 --> 00:23:34,370 ALI: Ci są nazywane magiczne liczby, a są naprawdę mylące. 478 00:23:34,370 --> 00:23:37,080 Jak, kiedy jesteś debugowania kodu, możesz nie pamiętać, co 479 00:23:37,080 --> 00:23:38,020 można ich wykorzystać. 480 00:23:38,020 --> 00:23:40,770 I dla nas klasyfikacji kodu, nie będziemy wiedzieć, co tak naprawdę 481 00:23:40,770 --> 00:23:41,750 używasz ich do. 482 00:23:41,750 --> 00:23:44,815 Więc lepiej jeśli rzeczywiście używać znaków więc to sprawia, 483 00:23:44,815 --> 00:23:46,065 więcej sensu dla ludzi. 484 00:23:49,460 --> 00:23:51,160 Okay, wszelkie inne pytania? 485 00:23:51,160 --> 00:23:52,975 Czy więcej ludzi zrobić, lub - 486 00:23:56,243 --> 00:23:57,493 Myślę, że możemy sprawdzić. 487 00:23:59,870 --> 00:24:02,410 To naprawdę straszne, że można zobaczyć kod ludzi. 488 00:24:02,410 --> 00:24:04,970 ROB: Tak. 489 00:24:04,970 --> 00:24:06,410 Nie musimy tego robić tutaj. 490 00:24:06,410 --> 00:24:08,380 Nie znamy nazwisk osób, albo. 491 00:24:08,380 --> 00:24:10,940 ALI: O tak, dobrze, że sprawia, że ​​lepiej, więc musimy być jeszcze bardziej obiektywne 492 00:24:10,940 --> 00:24:14,820 zamiast po prostu losowo wybierając kogoś. 493 00:24:14,820 --> 00:24:15,360 Nie martw się. 494 00:24:15,360 --> 00:24:16,265 I nie będzie to zrobić. 495 00:24:16,265 --> 00:24:20,396 Jeśli masz przypadkowych rzeczy o - Nieważne. 496 00:24:20,396 --> 00:24:20,870 Okay. 497 00:24:20,870 --> 00:24:22,556 Jak ludzie robią? 498 00:24:22,556 --> 00:24:26,950 >> GŁOŚNIK 17: Więc dziewiąty wiersz powinien wydrukować znak? 499 00:24:26,950 --> 00:24:27,430 ROB: Tak. 500 00:24:27,430 --> 00:24:27,910 ALI: Tak. 501 00:24:27,910 --> 00:24:30,770 Więc jeśli w dół - 502 00:24:30,770 --> 00:24:32,200 ROB: Och, nie mogę tego zrobić. 503 00:24:32,200 --> 00:24:35,400 ALI: Zobaczysz, że drukowane krzyżyka symbol. 504 00:24:35,400 --> 00:24:37,180 GŁOŚNIK 17: Oh, w porządku. 505 00:24:37,180 --> 00:24:41,290 ROB: Myślę, że w inny sposób można spojrzeć na rzeczy to my drukowania dwóch 506 00:24:41,290 --> 00:24:42,540 znaków. 507 00:24:44,500 --> 00:24:47,740 Pierwszy mamy drukowanie jest A. list 508 00:24:47,740 --> 00:24:51,610 Kolejny mamy drukowanie jest tylko 65. 509 00:24:51,610 --> 00:24:54,450 To będzie prawdopodobnie krzyczeć na mnie za to. 510 00:24:54,450 --> 00:25:00,060 Więc jeśli tylko uruchomić to zauważysz, że drukuje zarówno razy. 511 00:25:00,060 --> 00:25:02,070 Ponieważ pytasz to samo. 512 00:25:02,070 --> 00:25:07,840 Pytamy go wydrukować litery A. Następnie pytamy go, aby drukowanie 513 00:25:07,840 --> 00:25:13,820 Numer 65 interpretowane jako znak, który jest tak samo. 514 00:25:13,820 --> 00:25:15,100 ALI: Czy masz coś do powiedzenia? 515 00:25:15,100 --> 00:25:18,150 Och, to tylko żart, przepraszam. 516 00:25:18,150 --> 00:25:20,640 Dobra, jak to ludzie - 517 00:25:20,640 --> 00:25:22,280 ROB: Nie możemy po prostu przejść przez niego. 518 00:25:22,280 --> 00:25:25,250 >> ALI: Dobra, więc od czego zacząć? 519 00:25:25,250 --> 00:25:26,500 Ktokolwiek? 520 00:25:28,030 --> 00:25:34,486 Jako wskazówkę, musimy dostać coś od ludzi, od typerów. 521 00:25:34,486 --> 00:25:36,850 GŁOŚNIK 18: [niesłyszalne] 522 00:25:36,850 --> 00:25:38,290 ALI: Oh yeah, szybka, idealna. 523 00:25:38,290 --> 00:25:40,660 Więc będziemy wpisywać - 524 00:25:40,660 --> 00:25:41,670 co mamy napisać? 525 00:25:41,670 --> 00:25:43,660 Ktokolwiek? 526 00:25:43,660 --> 00:25:46,480 Czy mam po prostu wpisać go? 527 00:25:46,480 --> 00:25:47,530 Czy my rzeczywiście wpisując - 528 00:25:47,530 --> 00:25:48,430 ROB: Oczywiście. 529 00:25:48,430 --> 00:25:50,990 ALI: Więc będziemy wpisz printf skłonić go, więc możemy być 530 00:25:50,990 --> 00:25:54,810 podoba, daj mi znak. 531 00:25:54,810 --> 00:25:55,710 Dobra, a co potem? 532 00:25:55,710 --> 00:25:56,664 Dlaczego to robi? 533 00:25:56,664 --> 00:25:57,620 ROB: Nie wiem. 534 00:25:57,620 --> 00:26:00,070 ALI: Dobra. 535 00:26:00,070 --> 00:26:03,680 Więc teraz, mówimy im, aby dać nam znak. 536 00:26:03,680 --> 00:26:07,064 Ale to w jaki sposób rzeczywiście się ten znak? 537 00:26:07,064 --> 00:26:10,060 GŁOŚNIK 19: GetString użycia. 538 00:26:10,060 --> 00:26:12,040 ALI: GetString? 539 00:26:12,040 --> 00:26:12,850 Getchar? 540 00:26:12,850 --> 00:26:17,038 Ok, więc co za różnica między string i char? 541 00:26:17,038 --> 00:26:20,020 GŁOŚNIK 19: Stringi są serie, jak tablica znaków. 542 00:26:20,020 --> 00:26:21,910 >> ALI: Cool, yeah. 543 00:26:21,910 --> 00:26:25,550 Tak więc w tym problemu, musimy tylko rozważyć jeden znak na raz, więc 544 00:26:25,550 --> 00:26:28,400 my tylko zrobimy getchar dla tej instancji. 545 00:26:28,400 --> 00:26:32,400 ROB: Możemy zaimplementować funkcję, jeśli chcieliśmy, która miała cały ciąg 546 00:26:32,400 --> 00:26:35,750 i poszedł nad ciąg i zmienił wszystkie małe litery na wielkie i wszystkich 547 00:26:35,750 --> 00:26:37,380 wielkie litery na małe. 548 00:26:37,380 --> 00:26:39,170 Ale tutaj, po prostu pytanie o jeden znak. 549 00:26:39,170 --> 00:26:42,800 ALI: Więc teraz mamy znak tutaj, ale to musimy go zapisać. 550 00:26:42,800 --> 00:26:45,070 Więc dodajmy char c - co? 551 00:26:45,070 --> 00:26:46,070 GŁOŚNIK 20: Zdefiniuj zmienną. 552 00:26:46,070 --> 00:26:48,100 ALI: Tak, dokładnie. 553 00:26:48,100 --> 00:26:49,585 Więc mamy nasz charakter. 554 00:26:49,585 --> 00:26:51,766 ROB: Myślę, że może być - 555 00:26:51,766 --> 00:26:55,630 jesteś tylko trzy pomieszczenia, w, co jest, dlaczego krzyczy na ciebie. 556 00:26:55,630 --> 00:27:01,300 >> ALI: Okay, cool, teraz, że mamy tabulatorem zestaw, co dzieje się dalej? 557 00:27:01,300 --> 00:27:02,550 Jaki jest następny krok? 558 00:27:05,590 --> 00:27:08,870 ROB: Co nasz program powinien zrobić, to zmienić małą list do 559 00:27:08,870 --> 00:27:10,130 wielką literę. 560 00:27:10,130 --> 00:27:15,478 Co jeśli zdarzy mi się wejść do mieszania symbol? 561 00:27:15,478 --> 00:27:16,314 Jest to, że - 562 00:27:16,314 --> 00:27:16,732 ALI: To dobry symbol. 563 00:27:16,732 --> 00:27:18,270 Używamy go dużo. 564 00:27:18,270 --> 00:27:21,937 ROB: To ważna rzecz, którą można przekształcić do wielkiej formy? 565 00:27:21,937 --> 00:27:23,070 GŁOŚNIK 21: No 566 00:27:23,070 --> 00:27:24,070 ALI: No 567 00:27:24,070 --> 00:27:24,900 Powinniśmy sprawdzić. 568 00:27:24,900 --> 00:27:34,950 Więc możemy mieć if sprawdzenie więc jeśli c jest większa niż 569 00:27:34,950 --> 00:27:37,410 lub równa mała litera 'a'- 570 00:27:37,410 --> 00:27:45,490 więc jeśli spojrzymy na wykres, można zauważyć, że to musi być między tutaj 571 00:27:45,490 --> 00:27:47,670 na 97, a małe litery. 572 00:27:47,670 --> 00:27:52,110 I może być dowolnym z tych, w odstępach w dół. 573 00:27:52,110 --> 00:27:55,200 A jeszcze z przy 122. 574 00:27:55,200 --> 00:27:58,215 I musi się pomiędzy tymi dwoma wartościami. 575 00:27:58,215 --> 00:27:59,700 Czy to ma sens? 576 00:27:59,700 --> 00:28:04,130 ROB: Więc jeśli c nie jest pomiędzy 97 a 122 - 577 00:28:04,130 --> 00:28:09,960 lub nigdy nie ma potrzeby korzystania z tych numerów - jeśli c nie jest pomiędzy "A" i 578 00:28:09,960 --> 00:28:15,110 'Z', to nie był to ważny znak dla nas wielkie. 579 00:28:15,110 --> 00:28:18,590 ALI: więc w postaci kodu, to znaczy, że w przypadku C jest większa lub równa jeden 580 00:28:18,590 --> 00:28:19,640 małe case - 581 00:28:19,640 --> 00:28:21,270 wow, jak ty mówisz? 582 00:28:21,270 --> 00:28:26,900 Dobrze, jest większa niż lub równa małe litery "A", i to musi być powyżej 583 00:28:26,900 --> 00:28:32,250 Mała litera "Z". Musi więc być mniejsza niż lub równa małe "z". 584 00:28:32,250 --> 00:28:35,300 Robimy pewien, że to między nimi. 585 00:28:35,300 --> 00:28:38,540 Wtedy możemy dalej z naszym szczęśliwym kodem. 586 00:28:41,992 --> 00:28:43,360 Co? 587 00:28:43,360 --> 00:28:46,860 ROB: Więc pomyślałem chcemy tylko prosić, jeśli zdarzy nam się nie mieć 588 00:28:46,860 --> 00:28:48,250 małe litery. 589 00:28:48,250 --> 00:28:51,130 ALI: Oh, nie byłem tego świadomy. 590 00:28:51,130 --> 00:28:52,820 Przepraszam. 591 00:28:52,820 --> 00:28:58,100 >> Ok, więc jeśli chcemy zrobić jak Rob mówi, i upewnić się, że - 592 00:28:58,100 --> 00:29:02,068 możemy prosić je, to co powinniśmy zrobić? 593 00:29:02,068 --> 00:29:02,994 GŁOŚNIK 22: [niesłyszalne] 594 00:29:02,994 --> 00:29:03,530 ROB: Tak. 595 00:29:03,530 --> 00:29:05,630 Powinniśmy wykorzystać jakąś pętlę. 596 00:29:05,630 --> 00:29:12,900 Ponieważ użytkownik może wprowadzić coś nieprawidłowego niezliczone ilości razy. 597 00:29:12,900 --> 00:29:14,990 Więc można użyć pętli while. 598 00:29:14,990 --> 00:29:18,870 Celem na-while pętli - 599 00:29:18,870 --> 00:29:21,340 dosłownie, tylko raz w całym swoim życiu będzie kiedykolwiek użyć do- 600 00:29:21,340 --> 00:29:24,780 pętle while jest, gdy prosisz o wprowadzonych przez użytkownika. 601 00:29:24,780 --> 00:29:28,260 Więc fakt, pytamy na dane od użytkownika o to wskazówka, że ​​powinniśmy 602 00:29:28,260 --> 00:29:29,660 użyć do-while. 603 00:29:29,660 --> 00:29:30,780 A to dlaczego? 604 00:29:30,780 --> 00:29:34,270 Ponieważ do-while zawsze dzieje przynajmniej raz. 605 00:29:34,270 --> 00:29:40,260 Tak więc, gdy prosisz o wprowadzanych przez użytkownika, które chcesz, aby to się przynajmniej raz. 606 00:29:40,260 --> 00:29:42,750 A potem, jeśli coś udało, można iść dalej. 607 00:29:42,750 --> 00:29:45,130 Jeśli nie, wróć i zapytać ponownie. 608 00:29:45,130 --> 00:29:48,950 >> ALI: Czyli innymi słowy, musimy zrobić sekcję. 609 00:29:48,950 --> 00:29:51,130 I tak to mówi to coś zrobić. 610 00:29:51,130 --> 00:29:53,890 Więc printf - 611 00:29:53,890 --> 00:29:57,490 wydrukować oświadczenie, szybki, a także uzyskać znak, lub próba 612 00:29:57,490 --> 00:29:58,780 uzyskać charakter. 613 00:29:58,780 --> 00:30:03,410 A potem musimy sprawdzić, czy rzeczywiście to zrobił prawidłowo. 614 00:30:03,410 --> 00:30:07,730 Więc potem dodać warunki, to mówimy, natomiast, a następnie mamy 615 00:30:07,730 --> 00:30:08,980 instrukcja warunkowa. 616 00:30:11,600 --> 00:30:14,730 ROB: Ale teraz mamy odwrócić tok myślenia. 617 00:30:14,730 --> 00:30:18,940 Teraz my pierwotnie mówili, jeśli c jest w tym zakresie, to jest ważne. 618 00:30:18,940 --> 00:30:23,340 Teraz chcemy, aby odwrócić i powiedzieć, że jeśli c nie jest w tym zakresie, to 619 00:30:23,340 --> 00:30:25,020 należy wykonać kopię robić rzeczy ponownie. 620 00:30:25,020 --> 00:30:25,900 ALI: Oh, yeah. 621 00:30:25,900 --> 00:30:31,720 ROB: Tak więc, nie jest to prawda, chcemy wrócić i 622 00:30:31,720 --> 00:30:34,470 poprosić o inny charakter. 623 00:30:34,470 --> 00:30:36,880 Czy każdy widzi? 624 00:30:36,880 --> 00:30:38,830 Pytania w tej sprawie? 625 00:30:38,830 --> 00:30:39,400 Okay. 626 00:30:39,400 --> 00:30:43,480 >> Więc teraz mamy ważny znak, że możemy wielkie litery. 627 00:30:43,480 --> 00:30:47,150 ALI: Więc, co jest kolejnym krokiem uppercasing go? 628 00:30:49,994 --> 00:30:51,890 GŁOŚNIK 23: Dodaj 32. 629 00:30:51,890 --> 00:30:52,600 ALI: dodać - 630 00:30:52,600 --> 00:30:54,150 Przepraszam, co? 631 00:30:54,150 --> 00:30:56,580 GŁOŚNIK 23: Nie można po prostu dodać 32? 632 00:30:56,580 --> 00:31:02,360 ROB: Tak tak, nie w kategoriach liczb magicznych. 633 00:31:02,360 --> 00:31:04,610 Należy używać tylko apostrof rzeczy. 634 00:31:04,610 --> 00:31:06,450 GŁOŚNIK 23: Okay, dobrze - 635 00:31:06,450 --> 00:31:07,250 Rob: Ale można dostać 32 - 636 00:31:07,250 --> 00:31:11,870 ALI: Skąd masz numer 32, jak sądzę, jest to, co mówisz. 637 00:31:11,870 --> 00:31:18,060 GŁOŚNIK 23: [niesłyszalne] 638 00:31:18,060 --> 00:31:22,158 Rob: Tak więc możemy wymyślić numer 32 razem - 639 00:31:22,158 --> 00:31:24,468 GŁOŚNIK 23: [niesłyszalne]? 640 00:31:24,468 --> 00:31:24,930 ROB: Tak. 641 00:31:24,930 --> 00:31:28,540 Ale jeśli mamy zamiar to zrobić w dwóch etapach zrobiliśmy wcześniej z 642 00:31:28,540 --> 00:31:29,950 stuff pozycji. 643 00:31:29,950 --> 00:31:36,910 Tak więc pozycja w alfabecie, c dzieje się to c minus małe 644 00:31:36,910 --> 00:31:42,360 'A'. Więc jeśli weszliśmy małą "D", pozycja będzie 3. 645 00:31:42,360 --> 00:31:46,490 A teraz chcemy wziąć rzeczy do wielkiej gamy rzeczy. 646 00:31:46,490 --> 00:31:55,376 Więc teraz nasz nowy c będzie kapitału "" plus pozycja. 647 00:31:55,376 --> 00:32:00,090 Więc ludzie zobaczyć, jak to prowadzi nas - 648 00:32:00,090 --> 00:32:04,140 idziemy z małą zakresie, dokładna głębokość byliśmy na które 649 00:32:04,140 --> 00:32:07,650 Zakres, a idąc w dół do wielkiej zakresu, a dzieje się tak daleko 650 00:32:07,650 --> 00:32:10,610 się ponownie, które będzie ten sam znak, ale teraz 651 00:32:10,610 --> 00:32:12,550 duże litery. 652 00:32:12,550 --> 00:32:16,490 ALI: A dla osób, które zostały pomylone przez jak powiedział tylko 32, 653 00:32:16,490 --> 00:32:20,390 zasadniczo łączył oba te w jednej instrukcji. 654 00:32:20,390 --> 00:32:24,550 Więc odpowiednik sposób pisania to powiedzieć można tylko rodzaj 655 00:32:24,550 --> 00:32:28,190 stanowisko zastępcze, c minusa ',' i umieścić go tutaj. 656 00:32:28,190 --> 00:32:31,330 Więc to, co zrobił, Ja nie - 657 00:32:31,330 --> 00:32:44,510 char newc = wielkie litery 'A' c minus małe litery "a". A ponieważ z algebry, 658 00:32:44,510 --> 00:32:47,090 można je przenosić. 659 00:32:47,090 --> 00:32:52,960 Można również powiedzieć, że można go przesuwać, tak char newc = wielkie litery 'A' 660 00:32:52,960 --> 00:32:55,620 minus małe "a" plus C. 661 00:32:55,620 --> 00:32:58,650 A to, zauważysz, jeśli wrócimy do wykresu. 662 00:33:01,160 --> 00:33:06,300 Mamy wielkie jest 65 i małe jest 97. 663 00:33:06,300 --> 00:33:09,800 Tak 65 - 97 jest -32. 664 00:33:09,800 --> 00:33:10,020 >> Hi. 665 00:33:10,020 --> 00:33:10,930 Usiądź. 666 00:33:10,930 --> 00:33:12,180 Oh. 667 00:33:16,240 --> 00:33:17,980 Możesz usiąść tutaj. 668 00:33:17,980 --> 00:33:20,805 Spoko, dobrze, super. 669 00:33:20,805 --> 00:33:22,390 Zapraszamy do sekcji. 670 00:33:22,390 --> 00:33:25,110 Można zauważyć, że różnica jest 32. 671 00:33:25,110 --> 00:33:28,150 Więc to, gdzie ma ten numer. 672 00:33:28,150 --> 00:33:32,140 Ale to nie jest, jak Rob mówi, najlepszym sposobem, aby to zrobić, ponieważ ma dziwne 673 00:33:32,140 --> 00:33:35,260 magia zamieszanie numer. 674 00:33:35,260 --> 00:33:38,710 ROB: Należy używać kapitału minus małe. 675 00:33:38,710 --> 00:33:43,045 Nie powinno się używać tylko prosto 32. 676 00:33:43,045 --> 00:33:45,020 GŁOŚNIK 24: Dlaczego jest to, że znowu? 677 00:33:45,020 --> 00:33:49,860 Dlaczego nie użyć 32? 678 00:33:49,860 --> 00:33:55,630 ALI: Jeśli to zrobił, to byłoby char newc = -32 + c. 679 00:33:55,630 --> 00:34:00,030 A jeśli nie widać żadnego z reszty, jeśli to wszystko znika i 680 00:34:00,030 --> 00:34:04,720 po prostu zobaczyć ten jeden wiersz, to jak wiesz, co negatywne 32 jest? 681 00:34:04,720 --> 00:34:07,000 To jest po prostu nie na miejscu. 682 00:34:07,000 --> 00:34:10,360 ROB: Więc twój program będzie pracować całkowicie w porządku. 683 00:34:10,360 --> 00:34:12,960 To jest po prostu coś w stylu. 684 00:34:12,960 --> 00:34:17,760 Ktoś tam iz czytania kodu, oni są jak co to 32 oznacza? 685 00:34:17,760 --> 00:34:18,889 Może don't - 686 00:34:18,889 --> 00:34:22,090 I prawdopodobnie nie od razu zrozumieć, że 32 dzieje się 687 00:34:22,090 --> 00:34:25,100 różnica między małymi literami oraz wielką literę, chociaż 688 00:34:25,100 --> 00:34:26,510 będziemy wykorzystywać ten fakt w kolejnym problemem. 689 00:34:30,210 --> 00:34:31,610 32 jest - 690 00:34:31,610 --> 00:34:38,579 możesz zostawić komentarz powyżej to mówiąc 32 jest różnica między 691 00:34:38,579 --> 00:34:45,290 'A' i '.' Ale w tym momencie, dlaczego nie wystarczy użyć "a" i "A", a ty 692 00:34:45,290 --> 00:34:47,469 nie potrzebują komentarza wtedy. 693 00:34:47,469 --> 00:34:52,739 >> ALI: To tylko sposoby powyżej niej jest wiele czystsze, style-wise. 694 00:34:52,739 --> 00:34:54,590 I tak, skoro dopiero zaczynasz programowanie - 695 00:34:54,590 --> 00:34:57,775 lub Chyba nie, skoro jesteś edi hacker - nieważne. 696 00:34:57,775 --> 00:34:59,420 To jest po prostu dobry sposób na - 697 00:34:59,420 --> 00:35:01,230 lepiej mieć lepszy styl. 698 00:35:01,230 --> 00:35:02,850 Jest to łatwiejsze dla innych ludzi do czytania. 699 00:35:02,850 --> 00:35:06,560 ROB: Nigdy nie trzeba pamiętać ASCII tabeli, nigdy. 700 00:35:06,560 --> 00:35:09,505 Trzeba tylko być w stanie wykorzystać pojedyncze znaki cudzysłowu. 701 00:35:12,390 --> 00:35:12,730 Pytania? 702 00:35:12,730 --> 00:35:13,980 ALI: Każdy dobry? 703 00:35:16,020 --> 00:35:16,430 ROB: Okay. 704 00:35:16,430 --> 00:35:23,320 Więc następnym problemem jest znaczna. 705 00:35:23,320 --> 00:35:24,660 Więc następnym problemem pyta nas - 706 00:35:27,880 --> 00:35:31,570 ALI: Kolejny problem prosi nas, aby zrobić to samo, ale na 707 00:35:31,570 --> 00:35:32,640 operatory bitowe. 708 00:35:32,640 --> 00:35:35,170 ROB: I oczywiście, nie widzieliśmy Operatory bitowe jeszcze. 709 00:35:35,170 --> 00:35:38,874 Będziemy więc teraz do omówienia tych. 710 00:35:38,874 --> 00:35:39,540 ALI: Bądź podekscytowany. 711 00:35:39,540 --> 00:35:41,490 Są super zabawa. 712 00:35:41,490 --> 00:35:47,927 >> ROB: Tak regularne operatorzy, jak x plus y, minus, razy, podzielić. 713 00:35:47,927 --> 00:35:50,850 ALI: Wpisz je w ten monit. 714 00:35:50,850 --> 00:35:55,420 Rob: Jest również%, jeśli nie widziałeś go, za pomocą którego można by 715 00:35:55,420 --> 00:35:57,130 procent symbol. 716 00:35:57,130 --> 00:35:59,090 Ale nie będziemy używać tych dla tego problemu. 717 00:35:59,090 --> 00:36:01,400 Chcemy wykorzystać operatory bitowe. 718 00:36:01,400 --> 00:36:06,250 Pamiętaj, przywieźliśmy go w wykładzie jeden. 719 00:36:06,250 --> 00:36:10,760 Nie jestem pewien, czy mamy omówione binarne poza tym. 720 00:36:10,760 --> 00:36:13,710 Ale pamiętaj, że każda liczba jest reprezentowana - 721 00:36:13,710 --> 00:36:14,540 dobrze, wszystko - 722 00:36:14,540 --> 00:36:17,860 jest reprezentowana w 1s i 0s w binarnym. 723 00:36:17,860 --> 00:36:27,320 To znaczy, że kiedy mówię, numer 8, zdarza mi się, że to 724 00:36:27,320 --> 00:36:30,240 jak, 1000. 725 00:36:30,240 --> 00:36:35,530 Co operatory bitowe zróbmy to działać na tych bitów - 726 00:36:35,530 --> 00:36:37,000 ma działać na tych bitów bezpośrednio. 727 00:36:40,160 --> 00:36:42,490 Teraz mam już do czynienia w zakresie ośmiu. 728 00:36:42,490 --> 00:36:45,930 Mam do czynienia w odniesieniu do 1000, i chcę robić rzeczy, z tymi, 729 00:36:45,930 --> 00:36:47,670 Poszczególne bity. 730 00:36:47,670 --> 00:36:52,520 Więc Ali napisał bitowego operatorów tutaj, ale that's - 731 00:36:55,060 --> 00:36:58,020 Numer 8 użyjemy jako jeden z naszych numerów przykład. 732 00:36:58,020 --> 00:37:02,980 A reprezentacja binarna jest 1000. 733 00:37:02,980 --> 00:37:06,520 Użyjemy kolejny numer, 5 - 734 00:37:06,520 --> 00:37:12,070 rzeczywiście użyjmy 9 i 5. 735 00:37:12,070 --> 00:37:15,778 , A 5 reprezentacja binarna jest 00 - 736 00:37:15,778 --> 00:37:18,380 0101. 737 00:37:18,380 --> 00:37:19,480 ALI: Czy wszyscy dobrze na tym? 738 00:37:19,480 --> 00:37:21,040 Binary rzeczy? 739 00:37:21,040 --> 00:37:23,740 To z pierwszego wykładu? 740 00:37:23,740 --> 00:37:29,070 >> ROB: Tak, nawet jeśli nie są całkiem na wierzchu, jak konwertować rzeczy 741 00:37:29,070 --> 00:37:31,700 binarny, to nie jest istotne dla całości tego problemu. 742 00:37:31,700 --> 00:37:36,560 Będziemy go używać, ale trzeba o wiele więcej szans, aby dowiedzieć się, jak 743 00:37:36,560 --> 00:37:39,250 szybko włączyć rzeczy w binarnym. 744 00:37:39,250 --> 00:37:43,820 Więc za pomocą 9 i 5, teraz mamy nasze bitowe operatorów. 745 00:37:43,820 --> 00:37:48,620 O, a także, 9 i 5, jeśli jest to liczba całkowita, to rzeczywiście jest to 32-bitowy, 746 00:37:48,620 --> 00:37:53,150 co oznacza, że ​​mamy jak 0, 0, 0, 0 wiele razy, a następnie 747 00:37:53,150 --> 00:37:55,330 101 na końcu. 748 00:37:55,330 --> 00:37:58,530 To tylko dlatego, że nie ważne co robisz, w całkowitych, 32 bitów. 749 00:37:58,530 --> 00:38:01,570 Tylko dlatego, że musimy tylko cztery bity do reprezentowania 9 nie oznacza, że ​​nie jesteśmy 750 00:38:01,570 --> 00:38:05,500 stosując się pozostałe 27 bity dla właśnie 0s. 751 00:38:05,500 --> 00:38:10,110 ALI: Just do wyjaśnienia, jeden z tych numerów, które znajduje się 0 lub 1 jest bit. 752 00:38:10,110 --> 00:38:11,830 Ten jest 4 bity. 753 00:38:11,830 --> 00:38:14,320 Jak więc Rob powiedział, że maszyny przechowywać je w 32. 754 00:38:14,320 --> 00:38:19,430 Więc musieliby 32 z albo 0 lub 1. 755 00:38:19,430 --> 00:38:22,190 Cool? 756 00:38:22,190 --> 00:38:23,610 ROB: Operatory bitowe. 757 00:38:23,610 --> 00:38:27,310 Pierwszy, że będziemy zajmować się, zróbmy &. 758 00:38:27,310 --> 00:38:31,260 Więc jeśli mamy 9 i 5. 759 00:38:31,260 --> 00:38:38,310 Więc co i robi to, bit po bicie, porównuje bity dwóch liczb 760 00:38:38,310 --> 00:38:44,860 i jeśli oba numery są 1, a następnie powróci do 1. 761 00:38:44,860 --> 00:38:50,870 Jeśli jest 0, a drugi oznacza 1, lub oba są 0s, to zwraca 0. 762 00:38:50,870 --> 00:38:53,060 Tak więc można myśleć o tym, jak Twoje logiczne Andach. 763 00:38:53,060 --> 00:38:59,270 Jak trzeba prawda i prawdziwy powrót prawda, ale prawda i fałsz jest fałszywy. 764 00:38:59,270 --> 00:39:02,390 Więc to jest to samo, ale teraz mamy do czynienia z tylko bitów. 765 00:39:02,390 --> 00:39:04,910 >> ALI: Więc jeśli spojrzeć na to, będziesz miał 1 - 766 00:39:04,910 --> 00:39:08,490 będziesz ich układanie, więc będzie to 1 i 0. 767 00:39:08,490 --> 00:39:11,036 Czy myślicie, że będzie - co by to ocenić, w? 768 00:39:11,036 --> 00:39:11,770 GŁOŚNIK 25: 1. 769 00:39:11,770 --> 00:39:12,270 ALI: Cool. 770 00:39:12,270 --> 00:39:16,850 Lub nie. 771 00:39:16,850 --> 00:39:18,830 Przepraszam. 772 00:39:18,830 --> 00:39:21,290 Więc to ma sens? 773 00:39:21,290 --> 00:39:23,200 Więc co to jest zbiorowa odpowiedź ponownie? 774 00:39:23,200 --> 00:39:24,750 Przepraszam. 775 00:39:24,750 --> 00:39:27,530 Więc jeśli mamy 1 i 0, to co otrzymasz? 776 00:39:27,530 --> 00:39:30,260 ROB: Więc myślisz, jak mówisz i głośno. 777 00:39:30,260 --> 00:39:37,550 Jeśli masz dwa bity x i y, trzeba xiy być 1 w celu zamieszczenia 778 00:39:37,550 --> 00:39:40,770 do oceny, prawda - albo, w celu użycia go w celu oceny do 1. 779 00:39:40,770 --> 00:39:45,650 Jeśli x lub y jest 0, to wynikiem jest false lub 0. 780 00:39:45,650 --> 00:39:49,165 LUCAS: Dobrze jest też pamiętać, że 1 jest prawdziwe i 0 jest fałszywa. 781 00:39:49,165 --> 00:39:51,684 Więc jeśli masz prawdziwe i fałszywe, że to fałsz. 782 00:39:51,684 --> 00:39:53,570 Ale potem, true & true, true. 783 00:39:53,570 --> 00:39:55,040 False false i false. 784 00:39:55,040 --> 00:39:57,650 ALI: Mamy prawdziwe i fałszywe. 785 00:39:57,650 --> 00:39:58,530 Tak więc 1 i 0. 786 00:39:58,530 --> 00:40:00,380 Więc jeszcze raz, przepraszam, jeszcze raz? 787 00:40:00,380 --> 00:40:02,210 GŁOŚNIK 25: Byłoby 0. 788 00:40:02,210 --> 00:40:03,560 Tak, cool. 789 00:40:03,560 --> 00:40:05,400 A potem mamy 0 i 1 - 790 00:40:05,400 --> 00:40:06,260 GŁOŚNIK 25: [niesłyszalne] 791 00:40:06,260 --> 00:40:06,680 ALI: Tak. 792 00:40:06,680 --> 00:40:09,790 Więc zawsze można zamienić je w - 793 00:40:09,790 --> 00:40:12,150 Następnie, jeśli masz 0 i 0? 794 00:40:12,150 --> 00:40:12,618 GŁOŚNIK 4: 1? 795 00:40:12,618 --> 00:40:14,490 0? 796 00:40:14,490 --> 00:40:16,230 ROB: Więc to jest 0. 797 00:40:16,230 --> 00:40:18,870 Nie jest, że oba numery muszą być takie same. 798 00:40:18,870 --> 00:40:22,030 To, że oba numery muszą być w 1. 799 00:40:22,030 --> 00:40:26,150 ALI: Więc oba muszą być prawdziwe, aby była ona prawdziwa. 800 00:40:26,150 --> 00:40:26,950 Więc to jest 0. 801 00:40:26,950 --> 00:40:30,540 I wtedy masz 1% 1, co jest? 802 00:40:30,540 --> 00:40:32,640 ROB: To są całkiem dobre numery. 803 00:40:32,640 --> 00:40:34,362 Mają wszystko jest możliwe - 804 00:40:34,362 --> 00:40:36,210 ALI: Dobra robota, wow. 805 00:40:36,210 --> 00:40:37,080 Okay, cool. 806 00:40:37,080 --> 00:40:39,220 Więc to ma sens dla każdego? 807 00:40:39,220 --> 00:40:41,770 >> ROB: Więc teraz będziemy robić. | 808 00:40:41,770 --> 00:40:51,650 I to będzie bardzo podobne, ale teraz zamiast X i Y potrzeby 809 00:40:51,650 --> 00:40:54,880 być 1 w celu użycia go w celu oceny do jednego, teraz to tylko x lub 810 00:40:54,880 --> 00:40:56,360 Y musi wynosić 1. 811 00:40:56,360 --> 00:40:59,580 ALI: So 1 | 0 wynikiem - 812 00:40:59,580 --> 00:41:00,270 KLASA: 1. 813 00:41:00,270 --> 00:41:01,690 ALI: Cool. 814 00:41:01,690 --> 00:41:03,710 0 | 1 wynikiem - 815 00:41:03,710 --> 00:41:04,420 KLASA: 1. 816 00:41:04,420 --> 00:41:06,726 ALI: Cool, a następnie 0 | 0 - 817 00:41:06,726 --> 00:41:07,600 KLASA: 0. 818 00:41:07,600 --> 00:41:09,320 ALI: Tak, a następnie 1 | 1 - 819 00:41:09,320 --> 00:41:10,180 KLASA: 1. 820 00:41:10,180 --> 00:41:12,090 ALI: Cool. 821 00:41:12,090 --> 00:41:14,060 Więc jak to jest dwóch operatorów bitowej. 822 00:41:14,060 --> 00:41:15,430 Awesome. 823 00:41:15,430 --> 00:41:16,440 ROB: Więc teraz będziemy robić ^. 824 00:41:16,440 --> 00:41:18,470 ALI: powinniśmy zrobić wszystkie z nich? 825 00:41:18,470 --> 00:41:20,620 ROB: Tak, ponieważ myślę, że będziemy go używać - 826 00:41:20,620 --> 00:41:22,340 stosując je wszystkie. 827 00:41:22,340 --> 00:41:23,150 ALI: Dobra. 828 00:41:23,150 --> 00:41:23,570 So - 829 00:41:23,570 --> 00:41:25,540 ROB: Myślę, że nie trzeba. 830 00:41:25,540 --> 00:41:31,830 ALI: Więc ^ prace, w które musisz mieć dokładnie jeden prawdziwy i jeden fałszywy. 831 00:41:31,830 --> 00:41:34,330 ^ Oznacza wyłączne OR. 832 00:41:34,330 --> 00:41:36,650 Więc teraz, że nie jest - 833 00:41:36,650 --> 00:41:41,220 jeśli x i y są zarówno 1, teraz fałszywe. 834 00:41:41,220 --> 00:41:46,920 To jest różnica między ^ i | jest to, że OR, można mieć, jeśli x jest 835 00:41:46,920 --> 00:41:49,440 prawda czy y jest prawdziwe, to jesteśmy dobrzy. 836 00:41:49,440 --> 00:41:55,176 Nie, mówi, że jeśli x ^ to prawda, y musi być fałszywe, albo nie jest to prawdą. 837 00:41:55,176 --> 00:41:56,814 Czy masz pytanie? 838 00:41:56,814 --> 00:42:00,526 >> GŁOŚNIK 26: [niesłyszalne] 839 00:42:00,526 --> 00:42:00,990 ALI: Tak. 840 00:42:00,990 --> 00:42:01,830 To trochę podobne. 841 00:42:01,830 --> 00:42:07,320 ROB: Tak, kiedy się do tego niskiego poziomu rzeczy, sprzętu, są 842 00:42:07,320 --> 00:42:10,870 rodzaje operacji ma się do czynienia. 843 00:42:10,870 --> 00:42:13,200 Na poziomie sprzętowym, będzie zajmować się tylko bity. 844 00:42:13,200 --> 00:42:14,950 Nie radzić sobie z liczbami. 845 00:42:18,030 --> 00:42:23,502 ALI: Dobra, za ^, lub jeśli masz 1 ^ 0, co należy ocenić, że do? 846 00:42:23,502 --> 00:42:24,840 KLASA: 1. 847 00:42:24,840 --> 00:42:25,480 ALI: Cool. 848 00:42:25,480 --> 00:42:26,010 Jeśli masz 849 00:42:26,010 --> 00:42:28,370 0 ^ 1? KLASA: 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 A następnie 1 ^ 1? 854 00:42:33,460 --> 00:42:35,050 KLASA: 0. 855 00:42:35,050 --> 00:42:37,710 ALI: Cool, niesamowite. 856 00:42:37,710 --> 00:42:38,620 Następny - 857 00:42:38,620 --> 00:42:40,520 ROB: Myślę, że są to wszystko, co mamy do czynienia. 858 00:42:40,520 --> 00:42:41,490 Będziemy robić tylko to. 859 00:42:41,490 --> 00:42:43,242 ALI: tylko czas będziemy musieli zrobić - 860 00:42:43,242 --> 00:42:44,912 ROB: Oh, to będzie do ostatniego problemu. 861 00:42:44,912 --> 00:42:47,070 GŁOŚNIK 27: Czekaj, jeszcze raz? 862 00:42:47,070 --> 00:42:47,940 ALI: Przepraszam, jakie było twoje pytanie? 863 00:42:47,940 --> 00:42:49,564 >> GŁOŚNIK 27: Czy możesz wyjaśnić, że po raz kolejny? 864 00:42:49,564 --> 00:42:50,100 ^? 865 00:42:50,100 --> 00:42:51,490 GŁOŚNIK 27: Exclus - tak. 866 00:42:51,490 --> 00:42:55,800 ALI: Więc co exclusive OR oznacza to, że nie musi być wyłącznie 867 00:42:55,800 --> 00:43:02,970 jeden prawdziwy i jeden fałszywy, więc jedna 1 i jedna 0, w porównaniu z OR, można mieć - 868 00:43:02,970 --> 00:43:06,170 jeden z nich musi być prawdziwe, lub obu z nich może być prawda, bo 869 00:43:06,170 --> 00:43:07,130 ocenić na true. 870 00:43:07,130 --> 00:43:10,030 GŁOŚNIK 27: Więc 0 i 0 byłoby fałszywe. 871 00:43:10,030 --> 00:43:10,450 ALI: Tak. 872 00:43:10,450 --> 00:43:11,780 Ale jeśli masz 1 | 873 00:43:11,780 --> 00:43:14,290 1, który ocenia na true. 874 00:43:14,290 --> 00:43:18,210 Ale jeśli masz 1 ^ 1, tak jak my, że wartość false. 875 00:43:18,210 --> 00:43:21,220 Bo to nie jest wyłącznie jedna jest prawdziwa. 876 00:43:21,220 --> 00:43:26,930 ROB: I mogą lub nie mogą być przydatne, jednak zauważyć, że jest ^ 877 00:43:26,930 --> 00:43:28,890 równa tylko biorąc | 878 00:43:28,890 --> 00:43:30,290 minus &. 879 00:43:30,290 --> 00:43:32,250 I rzeczywiście można pomyśleć o tym w ten sposób. 880 00:43:32,250 --> 00:43:37,290 ^ Jest po prostu wszystko razem, ale ORing wyjmując wszystkie bity, gdzie 881 00:43:37,290 --> 00:43:38,610 oba były prawdziwe. 882 00:43:38,610 --> 00:43:41,620 Tak i wszystko wraca, gdzie oba były prawdziwe. 883 00:43:41,620 --> 00:43:45,850 | Wszystko wraca którym jeden lub oba są prawdziwe. 884 00:43:45,850 --> 00:43:51,050 Więc odejmując że się z | daje ^. 885 00:43:51,050 --> 00:43:52,040 ALI: Masz pytanie? 886 00:43:52,040 --> 00:43:53,290 To było dużo informacji. 887 00:43:55,980 --> 00:43:57,510 Każdy dobry? 888 00:43:57,510 --> 00:44:00,360 >> ROB: Możemy iść nad następnymi do następnego problemu, slash 889 00:44:00,360 --> 00:44:01,680 która godzina? 890 00:44:01,680 --> 00:44:04,010 Nie należy tego problemu do dnia następnego. 891 00:44:04,010 --> 00:44:07,830 ALI: Myślałem, że to ten. 892 00:44:07,830 --> 00:44:08,830 ROB: To nie jest. 893 00:44:08,830 --> 00:44:10,085 ALI: Czy na pewno? 894 00:44:10,085 --> 00:44:11,300 ROB: Tak, jestem pozytywne. 895 00:44:11,300 --> 00:44:12,970 ALI: Dlaczego nie zacząć robić kolejny problem? 896 00:44:15,710 --> 00:44:19,790 Problem jest, ponownie, aby zmienić go z małych liter na wielkie, a to 897 00:44:19,790 --> 00:44:21,720 czas, aby używać operatorów bitowej. 898 00:44:21,720 --> 00:44:22,970 ROB: Więc będziemy - 899 00:44:25,290 --> 00:44:29,670 zacznijmy binarnej reprezentacji 'A', 'A', 900 00:44:29,670 --> 00:44:31,750 co 65. 901 00:44:31,750 --> 00:44:36,150 Więc w binarny - 902 00:44:39,960 --> 00:44:47,900 tak '' = 65, co =, w postaci binarnej - 903 00:44:47,900 --> 00:44:51,380 Zamierzam bałagan liczby 0s - że. 904 00:44:51,380 --> 00:44:53,670 ALI: Więc czy to ma sens dla każdego? 905 00:44:53,670 --> 00:44:57,620 Tak więc, 1 nie 2S, 4S nie nie 8s, nie - 906 00:45:00,238 --> 00:45:07,075 nie 16s, nie 32s, a następnie jeden 64. 907 00:45:07,075 --> 00:45:08,685 ROB: Tak, myślę, że to o jeden za dużo 0s. 908 00:45:08,685 --> 00:45:09,600 ALI: Przepraszam. 909 00:45:09,600 --> 00:45:13,410 >> ROB: Ok, więc mamy zestaw 64, i mamy 1 zestaw i połączenie tych 910 00:45:13,410 --> 00:45:16,030 razem, mamy 65. 911 00:45:16,030 --> 00:45:17,470 ALI: Cool Beans? 912 00:45:17,470 --> 00:45:19,640 ROB: Więc teraz, małe litery 'a'- 913 00:45:22,220 --> 00:45:24,260 zauważyć 97 - 914 00:45:24,260 --> 00:45:26,370 , co stanowi różnicę pomiędzy 97 i 65? 915 00:45:26,370 --> 00:45:27,530 GŁOŚNIK 28: 32. 916 00:45:27,530 --> 00:45:28,130 ROB: Tak. 917 00:45:28,130 --> 00:45:35,920 Więc to jest 32, która jest sama w sobie nieco, tak, że będzie to 110001. 918 00:45:35,920 --> 00:45:41,200 I to będzie prawdziwy dla wszystkich możliwych znaków. 919 00:45:41,200 --> 00:45:49,800 Więc jeśli myślimy o "D", która będzie 68, że będzie to 1000011. 920 00:45:49,800 --> 00:45:56,310 , A następnie małe "d" będzie 68 plus 32, 100, która jest 921 00:45:56,310 --> 00:46:00,010 będzie to samo, że jest to po prostu przerzucanie 922 00:46:00,010 --> 00:46:04,300 32 ponownie, więc 1100011. 923 00:46:04,300 --> 00:46:08,610 Tak więc różnica między pismem wielkich i małych liter jest tylko przerzucanie 924 00:46:08,610 --> 00:46:10,170 że 32-bit pozycji. 925 00:46:10,170 --> 00:46:17,670 GŁOŚNIK 29: Czy to nie 1000100? 926 00:46:17,670 --> 00:46:19,670 ROB: Czekaj, to jest 100 - 927 00:46:19,670 --> 00:46:20,480 coś zrobiłem źle. 928 00:46:20,480 --> 00:46:21,730 To nie była prawda. 929 00:46:28,710 --> 00:46:31,150 Myślałam, że to różnica 3, więc wtedy po prostu zatrzymany 930 00:46:31,150 --> 00:46:33,970 binarnych 3 na koniec. 931 00:46:33,970 --> 00:46:36,710 To powinno być w porządku. 932 00:46:36,710 --> 00:46:37,150 ALI: Dziękuję. 933 00:46:37,150 --> 00:46:38,080 Dobry dla wskazujące, że obecnie. 934 00:46:38,080 --> 00:46:40,320 To było ostre. 935 00:46:40,320 --> 00:46:43,450 W porządku, jest to, że jasne dla ludzi? 936 00:46:43,450 --> 00:46:45,700 >> ROB: różnica między wersją wielkich i małych liter jest 937 00:46:45,700 --> 00:46:49,250 zawsze tylko będzie 32, a więc zawsze będzie jeden bit 938 00:46:49,250 --> 00:46:51,840 , że musi być odwrócony do zmiany między nimi. 939 00:46:51,840 --> 00:46:54,330 ALI: Więc w tym przypadku, znając różnicę między A i kapitału 940 00:46:54,330 --> 00:46:57,130 małe jest dobre. 941 00:46:57,130 --> 00:47:01,950 Nie w kodzie, ale koncepcyjnie przynajmniej, że jest dobry. 942 00:47:01,950 --> 00:47:05,880 Więc chłopaki mogą śmiało i kod, który w przestrzeni teraz. 943 00:47:05,880 --> 00:47:08,580 Albo powinniśmy po prostu porozmawiać? 944 00:47:08,580 --> 00:47:09,760 ROB: Możemy tylko dyskutować. 945 00:47:09,760 --> 00:47:10,680 Nie wiem. 946 00:47:10,680 --> 00:47:11,680 Macie może spróbować. 947 00:47:11,680 --> 00:47:13,560 Dyskusja między siebie na trochę. 948 00:47:13,560 --> 00:47:16,390 Damy Ci szansę na kod to. 949 00:47:16,390 --> 00:47:17,640 [Interfejsy VOICES] 950 00:47:19,785 --> 00:47:22,695 ALI: - jest super 951 00:47:22,695 --> 00:47:26,590 GŁOŚNIK 30: To jest jak komedia hakerów. 952 00:47:26,590 --> 00:47:31,060 ALI: Tak, jesteśmy po prostu mówienie wiadomości, przez niego przechodzi. 953 00:47:31,060 --> 00:47:32,310 >> ROB: I wracamy. 954 00:47:34,950 --> 00:47:35,405 ALI: To dziwne. 955 00:47:35,405 --> 00:47:38,720 Czuję, że powinniśmy mieć CS50 stacji wiadomości i mogliśmy 956 00:47:38,720 --> 00:47:41,500 siedzieć jak ten. 957 00:47:41,500 --> 00:47:43,500 ROB: News Hacker. 958 00:47:43,500 --> 00:47:46,848 ALI: News Hacker 50. 959 00:47:46,848 --> 00:47:49,210 ALI: Zapraszam do zadawania pytań jeśli jesteś zdezorientowany. 960 00:47:52,280 --> 00:47:53,980 ROB: Czy ktoś jest zablokowany? 961 00:47:53,980 --> 00:47:57,160 ALI: Tak, to jest dobra rzecz. 962 00:47:57,160 --> 00:47:58,590 ALI: Czekaj, jesteś zatrzymany w fotelu? 963 00:47:58,590 --> 00:48:01,010 Oh. 964 00:48:01,010 --> 00:48:02,260 Byłem trochę zaniepokojony. 965 00:48:06,670 --> 00:48:12,150 ROB: Bo zdałem sobie sprawę, że będą chcieli 966 00:48:12,150 --> 00:48:13,300 innego operatora bitowej. 967 00:48:13,300 --> 00:48:16,985 Na razie, po prostu przekształca wielkie litery na małe. 968 00:48:23,280 --> 00:48:25,220 ALI: Niestety, nie wszyscy uzyskać ogłoszenie? 969 00:48:25,220 --> 00:48:27,755 Mamy zamiar przejść od wielkiej litery na małe. 970 00:48:27,755 --> 00:48:30,990 ROB: Następnie omówimy małe na duże litery prawa po tym. 971 00:48:33,820 --> 00:48:36,650 Och, nie. 972 00:48:36,650 --> 00:48:39,560 Mamy błąd w tym, co, jak sądzę, nigdy nie próbował uciekać. 973 00:48:39,560 --> 00:48:44,140 Która jest po prostu, że char c musi być zadeklarowana poza pętli, ponieważ 974 00:48:44,140 --> 00:48:45,805 jej zakres jest ograniczony w pętli. 975 00:48:49,200 --> 00:48:53,060 GŁOŚNIK 32: W tym przypadku, jest to źle użyć numeru? 976 00:48:53,060 --> 00:48:56,930 ROB: Eh, nie trzeba. 977 00:48:56,930 --> 00:49:02,040 Gdybym zagwarantowane, że duże "A'- lub małe litery 'a' minus 'A' 978 00:49:02,040 --> 00:49:09,340 był dokładnie jeden bit, ale nie wiesz, że to 32 - 979 00:49:09,340 --> 00:49:13,160 wszystko będzie działać tak samo dobrze, gdyby 16 bit, który został przerzucony - lub 980 00:49:13,160 --> 00:49:14,610 nie, myślę, że to wouldn't - 981 00:49:14,610 --> 00:49:18,270 lub bit 64 zostały przerzucone, ewentualnie. 982 00:49:18,270 --> 00:49:23,230 Ale nie ma potrzeby używać 32. 983 00:49:23,230 --> 00:49:26,141 Można zamiast tego użyć małych liter "A" minus duże "A". 984 00:49:26,141 --> 00:49:29,340 >> GŁOŚNIK 32: Okay. 985 00:49:29,340 --> 00:49:32,996 Co możesz zrobić, jeśli czujesz się jak piszesz zbyt wiele jest można zdefiniować 986 00:49:32,996 --> 00:49:33,435 na szczycie. 987 00:49:33,435 --> 00:49:41,830 Więc można być, różnicy int = małe litery 'a' minus 'A'. I 988 00:49:41,830 --> 00:49:43,980 Następnie można wpisać różnicę zamiast. 989 00:49:43,980 --> 00:49:45,110 To jest ważne. 990 00:49:45,110 --> 00:49:48,002 Ale tylko za pomocą numeru 32 jest rodzaju - 991 00:49:48,002 --> 00:49:51,104 Głośników 33: Mimo to, ze względu na fakt, że jest to 32-bitowy? 992 00:49:51,104 --> 00:49:52,570 ALI: Tak. 993 00:49:52,570 --> 00:49:54,960 ROB: Nie może być - 994 00:49:54,960 --> 00:49:57,780 Jedyną gwarancją musimy zrobić to to, że różnica między 995 00:49:57,780 --> 00:49:59,480 małe i wielkie jest jeden bit. 996 00:49:59,480 --> 00:50:04,670 To nie powinno mieć znaczenia, że ​​to dzieje się 32 bit, który jest odwrócony. 997 00:50:04,670 --> 00:50:06,610 Ze względów czasowych, zaczniemy będzie ponad to. 998 00:50:09,170 --> 00:50:10,370 To jest w porządku, jeśli nie zostało zakończone. 999 00:50:10,370 --> 00:50:13,090 Niech się Pan o to nie martwi. 1000 00:50:13,090 --> 00:50:16,260 ROB: Zakładając, c jest literą - 1001 00:50:16,260 --> 00:50:18,030 nie musimy zakładać, c jest dużą literą. 1002 00:50:18,030 --> 00:50:20,750 Wiemy, c jest literą, po tej pętli - 1003 00:50:20,750 --> 00:50:22,160 do-while. 1004 00:50:22,160 --> 00:50:28,590 To znaczy, że to wygląda tak "A". Więc jeśli chcemy do tego doprowadzić 1005 00:50:28,590 --> 00:50:32,895 'A' na to 'a', co musimy zrobić? 1006 00:50:36,890 --> 00:50:41,920 Więc jak konwertować i przerzucić trochę? 1007 00:50:48,040 --> 00:50:49,450 ALI: Jak możemy ją odwrócić? 1008 00:50:49,450 --> 00:50:53,010 >> ROB: Wiemy więc chcemy przerzucić 32 bit. 1009 00:50:53,010 --> 00:50:59,722 Tak, że będzie robić "" minus "", lub możemy napisać 32, ale - 1010 00:50:59,722 --> 00:51:03,090 cholernie to, to na odwrót. 1011 00:51:03,090 --> 00:51:07,250 ALI: Ok, więc Rob tutaj jest obliczaniu tego, magiczna liczba 32. 1012 00:51:07,250 --> 00:51:12,000 Więc on dowiedzieć się, gdzie są nieco klapki obszar będzie. 1013 00:51:12,000 --> 00:51:14,810 A co wtedy, gdy stawiamy znaki zapytania są? 1014 00:51:14,810 --> 00:51:16,740 ROB: Jak odwrócić ten kawałek? 1015 00:51:16,740 --> 00:51:22,784 W odniesieniu do wielkiej litery, to jest 0, a my chcemy się 1. 1016 00:51:22,784 --> 00:51:23,660 GŁOŚNIK 34: |. 1017 00:51:23,660 --> 00:51:24,910 ROB: Tak. 1018 00:51:28,780 --> 00:51:38,190 Więc to nam mówi bierzemy 'A'. Jesteśmy ORing to 0 - 1019 00:51:38,190 --> 00:51:40,750 1000 - 1020 00:51:40,750 --> 00:51:44,720 i = to. 1021 00:51:44,720 --> 00:51:45,930 ALI: Czy to ma sens dla każdego? 1022 00:51:45,930 --> 00:51:48,812 Możemy przejść przez to krok po kroku, jeśli chcesz. 1023 00:51:52,030 --> 00:51:56,300 GŁOŚNIK 35: Czy [niesłyszalne]? 1024 00:51:56,300 --> 00:51:57,590 ALI: Gdzie jest minus? 1025 00:51:57,590 --> 00:51:58,500 ROB: Masz na myśli tutaj? 1026 00:51:58,500 --> 00:51:59,070 ALI: Oh, yeah. 1027 00:51:59,070 --> 00:52:00,140 ROB: Więc myślę, że to jest dla nas. 1028 00:52:00,140 --> 00:52:05,670 Moglibyśmy powiedzieć, 32, a teraz jesteśmy po prostu stosując bitowe operatorów. 1029 00:52:05,670 --> 00:52:07,010 ALI: Nie lubimy numery magiczne. 1030 00:52:07,010 --> 00:52:10,460 Nie zamierzamy tego robić. 1031 00:52:10,460 --> 00:52:13,592 Także myślę, że powinniśmy po prostu użyć operatory bitowe - 1032 00:52:13,592 --> 00:52:19,042 GŁOŚNIK 36: Jeśli używasz ^ a, dostaniesz 32? 1033 00:52:19,042 --> 00:52:19,980 GŁOŚNIK 37: Tak, myślę, że - 1034 00:52:19,980 --> 00:52:21,090 ROB: Tak będzie. 1035 00:52:21,090 --> 00:52:23,320 ALI: To jak można to zrobić za to, że 1036 00:52:23,320 --> 00:52:25,370 z kapitału na małe litery. 1037 00:52:25,370 --> 00:52:31,130 >> Teraz ktoś może mi powiedzieć, dlaczego Rob i zmieniłem szybka i jak poszliśmy 1038 00:52:31,130 --> 00:52:34,040 z wielką małymi literami, zamiast małe do 1039 00:52:34,040 --> 00:52:37,810 wielkie jak to robiliśmy wcześniej? 1040 00:52:37,810 --> 00:52:44,520 Czy ktoś ma jakieś pomysły, dlaczego tak może być trudniejsze? 1041 00:52:44,520 --> 00:52:44,880 ROB: Tak zrobimy - 1042 00:52:44,880 --> 00:52:46,178 ALI: Tak, proszę bardzo. 1043 00:52:46,178 --> 00:52:49,640 GŁOŚNIK 38: | operator tylko naprawdę dobre dla dodawania. 1044 00:52:49,640 --> 00:52:51,200 ALI: Tak, dokładnie. 1045 00:52:51,200 --> 00:52:58,320 ROB: To co chcemy zrobić w małych liter na wielkie sprawy, jest, 1046 00:52:58,320 --> 00:53:00,175 przekształcenia tej 'a'- 1047 00:53:08,540 --> 00:53:14,820 więc chcemy umieścić w niektórych liczb tutaj i użyć trochę operatora tak, że przychodzi 1048 00:53:14,820 --> 00:53:21,910 obecnie do kapitału A. Wciąż prawdopodobnie za pomocą 32 jakoś, ale teraz, jak my 1049 00:53:21,910 --> 00:53:25,280 uzyskać to wyjdzie na to? 1050 00:53:40,910 --> 00:53:42,750 Tak C - 1051 00:53:42,750 --> 00:53:44,000 oh, nadal chcę, że za - 1052 00:53:46,940 --> 00:53:51,055 ALI: Więc teraz jeśli mamy konwersji z małych liter na wielkie ponownie, wówczas 1053 00:53:51,055 --> 00:53:55,170 zrobić operację ^, jak wy powiedział. 1054 00:53:55,170 --> 00:53:57,650 ROB: Istnieją inne sposoby, można zrobić różne rzeczy. 1055 00:53:57,650 --> 00:54:01,680 Wielu operatorów bitowe skończyć się bardzo łatwo definiowalne w kategoriach 1056 00:54:01,680 --> 00:54:03,460 innych operatorów bitowej. 1057 00:54:03,460 --> 00:54:11,150 Więc miałem zamiar nie używać ^ lub w ogóle, ale ^ pracował perfekcyjnie. 1058 00:54:11,150 --> 00:54:17,910 >> ALI: Ok, więc mamy zamiar iść na ostatnim problemie, którym jest podstawowy - 1059 00:54:17,910 --> 00:54:22,390 Ostatni problem jest konwersja coś w binarnym. 1060 00:54:22,390 --> 00:54:26,350 Tak więc, na przykład, jeśli masz 50, a następnie przekształcić go 1061 00:54:26,350 --> 00:54:31,400 binarny, który jest 110010. 1062 00:54:31,400 --> 00:54:36,010 I myślę, że wy wszyscy wiecie o binarne z wykładu. 1063 00:54:36,010 --> 00:54:39,270 I ty też nie powinni umieszczać wiodącą 0s do niego. 1064 00:54:39,270 --> 00:54:41,460 ROB: Możesz pominąć tę część do teraz. 1065 00:54:41,460 --> 00:54:45,250 Pierwszy przebieg, można to zrobić tak, że nie są wiodące 0s. 1066 00:54:45,250 --> 00:54:49,200 A potem możemy zmodyfikować, że się nie mieć wiodącą 0s, jeśli mamy czas. 1067 00:54:49,200 --> 00:54:50,630 ALI: Więc nie martw się o to. 1068 00:54:50,630 --> 00:54:52,620 Wystarczy spróbować, aby w binarnym. 1069 00:54:55,880 --> 00:54:59,855 Dobrym miejscem na rozpoczęcie byłoby - 1070 00:54:59,855 --> 00:55:02,010 ROB: Musimy poprosić o całkowitej. 1071 00:55:02,010 --> 00:55:03,150 ALI: O tak, to jest dobry. 1072 00:55:03,150 --> 00:55:04,170 Możemy zacząć z tym. 1073 00:55:04,170 --> 00:55:06,870 Więc można zmienić polecenia. 1074 00:55:06,870 --> 00:55:08,840 Więc zamiast znaku, teraz mamy do czynienia z liczbami całkowitymi. 1075 00:55:13,670 --> 00:55:14,920 Cool? 1076 00:55:20,630 --> 00:55:25,300 >> ROB: A teraz to, co jest nasze do-while warunek będzie? 1077 00:55:25,300 --> 00:55:27,750 To się prosi o całkowitą nieujemną. 1078 00:55:31,080 --> 00:55:34,280 ALI: Kiedy chcemy zachować monitowania użytkownika o coś innego? 1079 00:55:34,280 --> 00:55:35,950 Kiedy jest mniejszy niż 0. 1080 00:55:35,950 --> 00:55:36,760 ALI: Racja. 1081 00:55:36,760 --> 00:55:38,010 ROB: Chociaż i jest mniejsze niż 0. 1082 00:55:41,090 --> 00:55:45,120 ALI: Teraz chcemy przekonwertować. 1083 00:55:45,120 --> 00:55:48,150 Czy macie jakieś pomysły, co robić? 1084 00:55:48,150 --> 00:55:49,400 Wszelkie Inklings? 1085 00:55:53,610 --> 00:55:54,984 Tak. 1086 00:55:54,984 --> 00:55:57,344 GŁOŚNIK 39: Czy musimy przekonwertować go, czy możemy po prostu wydrukować niektóre 0s i 1s 1087 00:55:57,344 --> 00:55:58,760 który byłby właściwy numer? 1088 00:55:58,760 --> 00:56:02,070 Można zrobić dla pętli i liczyć przez uprawnień 2? 1089 00:56:02,070 --> 00:56:03,320 ROB: Tak. 1090 00:56:05,750 --> 00:56:08,425 Nie trzeba do konwersji i. jego binarny - 1091 00:56:08,425 --> 00:56:13,720 reprezentacja binarna i nie zmieści się wewnątrz i. 1092 00:56:13,720 --> 00:56:19,090 Wystarczy wydrukować binarną reprezentację i. 1093 00:56:19,090 --> 00:56:21,010 ALI: Innymi słowy, nie ma potrzeby, aby przejść przez potęgi dwójki. 1094 00:56:21,010 --> 00:56:23,710 ROB: Bo już jest przechowywane jako pliki binarne, więc nie ma potrzeby 1095 00:56:23,710 --> 00:56:25,110 konwersji na binarny. 1096 00:56:25,110 --> 00:56:27,260 Wystarczy przejść nad jego binarnym, i je wydrukować. 1097 00:56:30,080 --> 00:56:32,140 I będziesz musiał użyć bitowego, ponieważ chcemy, aby spojrzeć na 1098 00:56:32,140 --> 00:56:33,390 rzeczywiste bity. 1099 00:56:37,060 --> 00:56:38,600 Nie musisz używać bitowe, ale proszę zrobić. 1100 00:56:44,130 --> 00:56:47,160 I to jest rzeczywiście - 1101 00:56:47,160 --> 00:56:50,200 po prostu można zrobić potęgi dwójki mnożąc przez 2. 1102 00:56:50,200 --> 00:56:55,120 Pojedziemy na jednym z dwóch ostatnich operatorów bitowe binarnych, 1103 00:56:55,120 --> 00:56:56,410 co to za jeden. 1104 00:56:56,410 --> 00:56:58,730 Więc jeśli wziąć - 1105 00:56:58,730 --> 00:57:00,083 >> ALI: Czy można przejść przez obu z nich? 1106 00:57:00,083 --> 00:57:01,440 ROB: Tak. 1107 00:57:01,440 --> 00:57:03,050 Więc chodźmy z 9. 1108 00:57:03,050 --> 00:57:05,210 Więc 9 left shift 1 - 1109 00:57:05,210 --> 00:57:12,220 co oznacza przesunięcie w lewo jest po prostu przenieść wszystkie bity w lewo i włóż 0. 1110 00:57:12,220 --> 00:57:15,530 Więc idziemy wszystkie bity 9 do lewej 1111 00:57:15,530 --> 00:57:20,240 stanowisko, które daje nam - 1112 00:57:26,530 --> 00:57:31,570 Więc zauważyć, że zmieniły wszystko opuścił jeden, i włożona 0 na 1113 00:57:31,570 --> 00:57:32,730 prawa strona. 1114 00:57:32,730 --> 00:57:36,755 Jeśli mieliśmy przesunięte w lewo o dwa, będziemy zmieniać wszystko w lewo przez dwa, 1115 00:57:36,755 --> 00:57:41,950 i włóż dwie 0s do wypełnienia luki. 1116 00:57:41,950 --> 00:57:43,200 Pytanie? 1117 00:57:44,890 --> 00:57:47,510 ALI: Więc prawo shift robi coś podobnego. 1118 00:57:47,510 --> 00:57:53,190 Jeśli masz 9 PRAWY SHIFT 1 to jesteś po prostu się wszystko od do 1119 00:57:53,190 --> 00:57:57,890 prawo, tracisz cyfrowy, więc 100 zamiast. 1120 00:57:57,890 --> 00:58:04,142 ROB: Więc to dobrze, że jesteś tracąc trochę, że zdarzyło się wszystko 1121 00:58:04,142 --> 00:58:05,200 do prawej. 1122 00:58:05,200 --> 00:58:08,850 Istnieją różne rodzaje odpowiednich zmian, ale w zasadzie można myśleć 1123 00:58:08,850 --> 00:58:11,410 Prawy Shift, jak tylko dzieląc przez 2. 1124 00:58:11,410 --> 00:58:14,430 A może myślisz o przesunięciem w lewo, jak pomnożenie przez 2. 1125 00:58:14,430 --> 00:58:16,490 Więc jeśli konwertowany to - 1126 00:58:16,490 --> 00:58:22,350 jeśli konwertowany 9 przesunięcie 1, która jest równa 10010, jeśli rzeczywiście udał 1127 00:58:22,350 --> 00:58:25,100 przez binarne i zorientowali się, co to było, byłoby to po prostu 18. 1128 00:58:25,100 --> 00:58:26,880 My po prostu pomnożyć przez 2. 1129 00:58:26,880 --> 00:58:30,982 1001 left shift 2 będzie 36. 1130 00:58:30,982 --> 00:58:32,400 Mnożymy przez 4. 1131 00:58:41,740 --> 00:58:45,360 Ok, fajnie, tak że jest poręczny operatory bitowe dla tej jednej. 1132 00:58:52,570 --> 00:58:53,330 Więcej zamieszania? 1133 00:58:53,330 --> 00:58:54,870 Czy chcecie, aby ją wypróbować? 1134 00:58:54,870 --> 00:58:58,970 Albo może po prostu wskoczyć i go uruchomić? 1135 00:58:58,970 --> 00:59:01,140 ROB: Prawdopodobnie powinniśmy wskoczyć w. 1136 00:59:01,140 --> 00:59:01,880 ALI: Tak, w porządku. 1137 00:59:01,880 --> 00:59:03,370 ROB: I przejść przez to razem. 1138 00:59:03,370 --> 00:59:04,440 >> ALI: No po prostu pójdę do niego. 1139 00:59:04,440 --> 00:59:09,700 Tak jak powiedział na początku, będziemy po prostu przejść przez kawałek po kawałku. 1140 00:59:09,700 --> 00:59:11,890 Więc my będziemy potrzebować pętlę. 1141 00:59:11,890 --> 00:59:16,730 Czy ktoś ma pomysł na najlepszy rodzaj pętli, aby przejść przez to? 1142 00:59:16,730 --> 00:59:20,544 Mamy pętle while, do-while pętle, pętle. 1143 00:59:20,544 --> 00:59:22,400 GŁOŚNIK 40: Do-while? 1144 00:59:22,400 --> 00:59:25,150 ROB: Tak pamiętam, co mówiłem wcześniej o, używamy tylko do-while 1145 00:59:25,150 --> 00:59:27,390 pętle, aby wprowadzane przez użytkownika. 1146 00:59:27,390 --> 00:59:30,890 Nigdy nie będzie dość dużo kiedykolwiek używać ich na nic innego. 1147 00:59:30,890 --> 00:59:33,660 ALI: Problem z pętli do-while jest to coś robi zanim sprawdza 1148 00:59:33,660 --> 00:59:34,470 warunek. 1149 00:59:34,470 --> 00:59:36,540 Tak, to może zrobić coś źle - 1150 00:59:36,540 --> 00:59:38,640 jak, boli - 1151 00:59:38,640 --> 00:59:40,350 zrobić coś, co nie jest możliwe. 1152 00:59:40,350 --> 00:59:42,290 Więc chcesz sprawdzić. 1153 00:59:42,290 --> 00:59:47,620 ROB: Jest wiele przypadków, w których można korzystać z pętli do-while, ale ludzie 1154 00:59:47,620 --> 00:59:52,120 nie należy się spodziewać, aby z nich korzystać, chyba że jest to wejście użytkownika. 1155 00:59:52,120 --> 00:59:54,215 Więc wykorzystaliśmy nasze do-while, aby uzyskać i. 1156 00:59:57,160 --> 01:00:01,260 Ile razy to nasza pętla będzie chciał pętli? 1157 01:00:01,260 --> 01:00:04,060 Chcemy w pętli, każdy z bitów i. 1158 01:00:04,060 --> 01:00:06,302 Ile bitów w I? 1159 01:00:06,302 --> 01:00:07,266 GŁOŚNIK 41: 32. 1160 01:00:07,266 --> 01:00:07,750 ALI: Tak. 1161 01:00:07,750 --> 01:00:09,850 ROB: Nie ma więc 32 bitów. 1162 01:00:09,850 --> 01:00:12,920 Nie chcemy powiedzieć 32. 1163 01:00:12,920 --> 01:00:16,230 Zamiast tego chcę powiedzieć sizeof - 1164 01:00:16,230 --> 01:00:18,226 , które widziałeś, że w klasie jeszcze? 1165 01:00:18,226 --> 01:00:19,100 ALI: Nope. 1166 01:00:19,100 --> 01:00:20,380 ROB: Dlaczego to powiedzieć w użyciu, że - 1167 01:00:20,380 --> 01:00:22,160 sizeof (int) razy 8 - 1168 01:00:22,160 --> 01:00:23,530 ALI: Więc, sizeof jest - 1169 01:00:23,530 --> 01:00:27,050 >> GŁOŚNIK 42: [niesłyszalne] 1170 01:00:27,050 --> 01:00:27,440 ALI: Ciekawe. 1171 01:00:27,440 --> 01:00:31,610 Więc, sizeof jest wbudowana funkcja C, gdzie po prostu mówi ci 1172 01:00:31,610 --> 01:00:32,500 Liczba bitów w - 1173 01:00:32,500 --> 01:00:33,220 ROB: Bytes. 1174 01:00:33,220 --> 01:00:34,210 ALI: Bytes, przepraszam - 1175 01:00:34,210 --> 01:00:39,990 Liczba bajtów zmienna musi zapisać wartość. 1176 01:00:39,990 --> 01:00:46,205 Więc myślę, że podszedł do grupy, a następnie, int to 4 bajty może. 1177 01:00:46,205 --> 01:00:46,610 Cool? 1178 01:00:46,610 --> 01:00:50,610 ROB: Nie należy jednak wiedzieć, że int jest 4 bajty. 1179 01:00:50,610 --> 01:00:52,670 Powinieneś być w stanie powiedzieć - 1180 01:00:52,670 --> 01:00:55,870 należy użyć sizeof (int), aby uzyskać 4 bajty. 1181 01:00:55,870 --> 01:00:59,170 I to jest rzeczywiście ważne dla niektórych rzeczy. 1182 01:00:59,170 --> 01:01:01,650 Int nie może być 4 bajtów. 1183 01:01:01,650 --> 01:01:04,050 Na innym komputerze, int może być 8 bajtów. 1184 01:01:04,050 --> 01:01:08,500 Więc twój program nie będzie działał na tym komputerze, ponieważ zakodowane 32 1185 01:01:08,500 --> 01:01:12,230 bity, gdy na danym komputerze dzieje się 64 bitów. 1186 01:01:12,230 --> 01:01:15,260 ALI: Więc masz całkowitą liczbę bitów, które mają to do odwrócenia. 1187 01:01:15,260 --> 01:01:17,480 Rob: A różnica między bajtem i trochę to, że nie 1188 01:01:17,480 --> 01:01:19,100 to 8 bitów w bajcie. 1189 01:01:19,100 --> 01:01:22,110 Więc sizeof (int) zwraca 4 bajty, to musimy pomnożyć 1190 01:01:22,110 --> 01:01:24,420 przez 8, aby uzyskać 32 bitów. 1191 01:01:24,420 --> 01:01:27,680 >> ALI: Okay, więc wiemy, maksimum i wiemy, że chcemy, aby przejść od - 1192 01:01:27,680 --> 01:01:29,260 chcemy, aby przejść przez wszystkie z nich. 1193 01:01:29,260 --> 01:01:32,950 Dlatego chcemy, aby przejść od 0 do numBits. 1194 01:01:32,950 --> 01:01:37,160 Więc czy ktoś wie jak napisać pętlę dla tego? 1195 01:01:37,160 --> 01:01:37,790 Ktokolwiek? 1196 01:01:37,790 --> 01:01:39,680 GŁOŚNIK 43: [niesłyszalne] 1197 01:01:39,680 --> 01:01:44,130 ALI: Więc chcesz przemierzać numer I z 0-gi bitu do 1198 01:01:44,130 --> 01:01:47,840 pierwszy bit, drugi bit, trzeci bit, aż do numBits. 1199 01:01:47,840 --> 01:01:50,972 Maksymalna liczba bitów, które można dostać na. 1200 01:01:54,420 --> 01:01:57,780 ROB: Co wspólnego pętli używamy tego, co chcemy zrobić x razy coś? 1201 01:01:57,780 --> 01:01:58,280 ALI: For. 1202 01:01:58,280 --> 01:01:59,280 Perfect. 1203 01:01:59,280 --> 01:02:00,440 Więc mamy dla. 1204 01:02:00,440 --> 01:02:05,242 A potem tworzymy iterator, który nie będzie 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 Więc zaczniemy na 0. 1208 01:02:09,740 --> 01:02:13,110 I wtedy będziemy mieć kondycję, aby upewnić się, gdy jesteś 1209 01:02:13,110 --> 01:02:14,968 Przechodziłem przez to za każdym razem - 1210 01:02:14,968 --> 01:02:16,960 [Interfejsy VOICES] 1211 01:02:16,960 --> 01:02:17,960 ROB: j. 1212 01:02:17,960 --> 01:02:19,970 ALI: j jest poniżej numBits. 1213 01:02:19,970 --> 01:02:23,680 Więc nie chcę zrobić rzeczywista równa się jeden, bo są numBits 1214 01:02:23,680 --> 01:02:25,365 całkowita i zaczynamy na 0. 1215 01:02:25,365 --> 01:02:26,360 Więc jesteśmy rzeczywiście będzie mieć - 1216 01:02:26,360 --> 01:02:27,400 GŁOŚNIK 44: Oh. 1217 01:02:27,400 --> 01:02:29,300 ALI: Indeksy nie kończy się numBits minus 1. 1218 01:02:29,300 --> 01:02:34,070 ROB: Etykietujemy bity od 0 do 31, nie opisać je od 1 do 32. 1219 01:02:34,070 --> 01:02:36,970 ALI: I wtedy będziemy zwiększać za każdym razem o jeden, ponieważ chcemy 1220 01:02:36,970 --> 01:02:38,050 sprawdzić każdy jeden. 1221 01:02:38,050 --> 01:02:39,851 Więc pójdziemy j + +. 1222 01:02:39,851 --> 01:02:42,740 >> GŁOŚNIK 45: Dlaczego to robisz? 1223 01:02:42,740 --> 01:02:46,100 GŁOŚNIK 46: Dlaczego idziesz przez każdy bit? 1224 01:02:46,100 --> 01:02:49,310 ROB: Dlatego chcemy, aby przejść przez każdy bit i - 1225 01:02:52,780 --> 01:02:55,100 Powiedzmy więc, że mamy jakiś numer. 1226 01:02:55,100 --> 01:02:56,195 ALI: 68. 1227 01:02:56,195 --> 01:02:57,470 ROB: Możemy wykorzystać 68. 1228 01:02:57,470 --> 01:03:00,450 Więc binarny będzie 100100. 1229 01:03:00,450 --> 01:03:05,540 Tak to jest w środku I i chcemy iść na każdy z tych bitów. 1230 01:03:05,540 --> 01:03:06,450 Czy jest to 1? 1231 01:03:06,450 --> 01:03:07,320 Wydrukuj 1. 1232 01:03:07,320 --> 01:03:08,120 Czy to jest 0? 1233 01:03:08,120 --> 01:03:09,100 Wydrukuj 0. 1234 01:03:09,100 --> 01:03:10,530 Potem idziemy do następnego bitu. 1235 01:03:10,530 --> 01:03:11,210 Czy jest to 1? 1236 01:03:11,210 --> 01:03:11,610 Wydrukuj 1. 1237 01:03:11,610 --> 01:03:11,830 Jest 0? 1238 01:03:11,830 --> 01:03:13,080 Wydrukuj 0. 1239 01:03:14,880 --> 01:03:16,710 ALI: Cool, okay. 1240 01:03:16,710 --> 01:03:22,880 Teraz jesteśmy na właściwej wskaźnika dla przypadku, gdy bit jest. 1241 01:03:25,380 --> 01:03:28,080 Jak można sprawdzić, czy określony jeden? 1242 01:03:28,080 --> 01:03:33,130 Powiedzmy, że jesteśmy na j = 0, więc chcemy sprawdzić 0 indeks bitu. 1243 01:03:33,130 --> 01:03:37,980 Tak więc, w tym przypadku, ten. 1244 01:03:37,980 --> 01:03:41,930 >> Więc teraz, jak mamy go o sprawdzenie - oh, to będzie ten. 1245 01:03:41,930 --> 01:03:42,810 ROB: Tak. 1246 01:03:42,810 --> 01:03:44,310 ALI: Przepraszam. 1247 01:03:44,310 --> 01:03:47,930 Jak byśmy go o sprawdzenie, że jeden, w pewnym sensie? 1248 01:03:47,930 --> 01:03:52,030 W jaki sposób możemy sprawdzić, czy jest to 0 lub 1? 1249 01:03:52,030 --> 01:03:52,730 Cóż let's - 1250 01:03:52,730 --> 01:03:53,940 KLASA: I 1? 1251 01:03:53,940 --> 01:03:54,390 ALI: I? 1252 01:03:54,390 --> 01:03:55,010 Tak. 1253 01:03:55,010 --> 01:03:57,810 ROB: Powiedzmy, że mamy już 1. 1254 01:03:57,810 --> 01:04:02,470 I wówczas będzie to, czy to powrotu 1 lub 0. 1255 01:04:05,580 --> 01:04:08,200 ALI: Więc możemy zejść. 1256 01:04:08,200 --> 01:04:10,695 I możemy zrobić jak wam powiedziałem, robienia i funkcji. 1257 01:04:13,810 --> 01:04:15,560 ROB: int - 1258 01:04:15,560 --> 01:04:18,290 jak chcę to powiedzieć - 1259 01:04:18,290 --> 01:04:24,250 Isone = i. 1260 01:04:24,250 --> 01:04:29,770 A dla pierwszego bitu zdarzy nam się patrząc na, robimy i & 1. 1261 01:04:29,770 --> 01:04:33,302 Teraz to, co będziemy chcieli i by na drugi bit? 1262 01:04:33,302 --> 01:04:34,294 GŁOŚNIK 47: 2. 1263 01:04:34,294 --> 01:04:36,110 ROB: Tak, po drugie, że jesteśmy na 2. 1264 01:04:36,110 --> 01:04:39,100 ALI: Zauważysz, że 1 przeniósł się do lewej. 1265 01:04:39,100 --> 01:04:44,320 Tak więc dowiedzieliśmy się żadnych Operatory bitowe zrobić taką funkcję? 1266 01:04:44,320 --> 01:04:45,160 ROB: następny - 1267 01:04:45,160 --> 01:04:46,280 ALI: Tak, tak, dokładnie. 1268 01:04:46,280 --> 01:04:48,670 Więc to jest lewy shift. 1269 01:04:48,670 --> 01:04:51,120 Zamiast zawsze kontroli z 1, jedziemy do przesunięcia go. 1270 01:04:51,120 --> 01:04:53,470 A ile razy będziemy zmieniać go? 1271 01:04:53,470 --> 01:04:59,340 Jeśli mamy kontroli jeden 0-cia następnie będziemy przenosić go na zero. 1272 01:04:59,340 --> 01:04:59,975 Tak, dokładnie. 1273 01:04:59,975 --> 01:05:02,090 Więc w lewo przesunąć go przez j. 1274 01:05:02,090 --> 01:05:02,550 Perfect. 1275 01:05:02,550 --> 01:05:03,550 Więc teraz wiemy - 1276 01:05:03,550 --> 01:05:06,450 mamy to int czy to 1, a następnie - 1277 01:05:10,690 --> 01:05:14,670 tak miły Roba oszustwa tutaj - 1278 01:05:14,670 --> 01:05:18,090 i tak teraz idzie naprzód, a on po prostu powiedział, że jeśli to faktycznie jest 1, 1279 01:05:18,090 --> 01:05:23,540 ponieważ 1 jest prawdziwy, więc nie mamy do powiedzenia isf Isone wynosi 1 - 1280 01:05:23,540 --> 01:05:29,210 więc jeśli Isone, potem wydrukować 1, a inaczej drukujemy 0. 1281 01:05:29,210 --> 01:05:33,350 >> ROB: To nasz program ma ogólny błąd. 1282 01:05:33,350 --> 01:05:35,845 Cóż, pytania na ten pierwszy. 1283 01:05:35,845 --> 01:05:41,692 GŁOŚNIK 48: Czy kiedykolwiek umieścić Isone wewnątrz cztery części operacji i 1284 01:05:41,692 --> 01:05:47,804 następnie go przesunąć się jako ostatniej części? 1285 01:05:47,804 --> 01:05:50,050 Więc Isone równa 1, a następnie - 1286 01:05:50,050 --> 01:05:53,140 ROB: Tak, można. 1287 01:05:53,140 --> 01:05:57,200 Rzeczywiście możemy zobaczyć, że kiedy naprawić błąd, że jestem o 1288 01:05:57,200 --> 01:06:00,050 przedyskutować z wami wszystkimi. 1289 01:06:00,050 --> 01:06:03,470 Wskazówka kolejności zamierzamy wobec rzeczy. 1290 01:06:03,470 --> 01:06:10,570 Biorąc pod uwagę to reprezentacja binarna, zaczynamy z 0-ga bit. 1291 01:06:10,570 --> 01:06:13,010 Jeśli jest 0, to są drukowane - 1292 01:06:13,010 --> 01:06:15,620 dobrze, to 0, więc drukujesz 0. 1293 01:06:15,620 --> 01:06:16,860 Potem idziemy do drugiego bitu. 1294 01:06:16,860 --> 01:06:19,100 To jest 0, więc wydrukować 0. 1295 01:06:19,100 --> 01:06:20,290 Potem idziemy do trzeciego bitu. 1296 01:06:20,290 --> 01:06:22,950 To jest 1, więc wydrukować 1. 1297 01:06:22,950 --> 01:06:24,580 ALI: Więc to będzie do tyłu. 1298 01:06:24,580 --> 01:06:27,906 Więc jak wy Proponuję naprawić i iść w drugą stronę? 1299 01:06:27,906 --> 01:06:28,900 GŁOŚNIK 49: [niesłyszalne] 1300 01:06:28,900 --> 01:06:29,490 ROB: Tak. 1301 01:06:29,490 --> 01:06:34,500 Więc zamiast iść od 0 do numBits, pójdziemy z numBits bitów 0. 1302 01:06:34,500 --> 01:06:35,600 ALI: Tak [niesłyszalne] 1303 01:06:35,600 --> 01:06:36,940 zawsze można iść w drugą stronę. 1304 01:06:36,940 --> 01:06:38,970 ROB: NumBits minus 1, bo to ostatnia nubmer - 1305 01:06:38,970 --> 01:06:41,160 ALI: Bo to idzie od 0 do 31. 1306 01:06:41,160 --> 01:06:44,420 I będziemy zawsze upewnić się, że jest większy niż 0, więc nie idź 1307 01:06:44,420 --> 01:06:46,100 zbyt daleko w prawo. 1308 01:06:46,100 --> 01:06:48,800 A potem będziesz zawsze odejmować od 1, aby przejść w prawo. 1309 01:06:48,800 --> 01:06:52,240 >> ROB: Więc teraz mamy odwrotną pętlę, a numer jest z powrotem do druku 1310 01:06:52,240 --> 01:06:53,586 w sposób prawidłowy. 1311 01:06:53,586 --> 01:06:57,560 GŁOŚNIK 50: Nie musisz zmienić rzeczy shift też? 1312 01:06:57,560 --> 01:06:58,810 ALI: Więc nie. 1313 01:07:03,810 --> 01:07:06,470 ROB: Robimy dokładnie te same czynności, lecz teraz 1314 01:07:06,470 --> 01:07:07,470 się w odwrotnej kolejności. 1315 01:07:07,470 --> 01:07:14,170 Więc zamiast robić przesunięcia przez numBits minus 1, aby cokolwiek to 1316 01:07:14,170 --> 01:07:17,430 bit jest, zamiast robić to ostatnie, po prostu zrób to jako pierwszy. 1317 01:07:19,970 --> 01:07:22,970 Poprzez odwrócenie tego tutaj, ale w odwrotnej kolejności wszystko 1318 01:07:22,970 --> 01:07:24,190 , co dzieje się w środku. 1319 01:07:24,190 --> 01:07:28,610 Ale nie chcemy, aby zmienić to, co dzieje się wewnątrz wcale. 1320 01:07:28,610 --> 01:07:29,860 ALI: Czy to ma sens? 1321 01:07:32,240 --> 01:07:33,660 Przetwarzanie? 1322 01:07:33,660 --> 01:07:41,200 Okay, więc ma ktoś jeszcze jakieś inne konceptualne pytania? 1323 01:07:41,200 --> 01:07:45,030 ALI: Zanim przejdziemy do jego punktu jest - 1324 01:07:45,030 --> 01:07:46,280 ALI: Dobrze, dobrze iść. 1325 01:07:48,350 --> 01:07:53,160 Rob: Zamiast j być nasze - 1326 01:07:55,780 --> 01:08:00,550 zamiast j aby zawsze przenoszony przez, jak jeden lewym j zmiany, myślę, że 1327 01:08:00,550 --> 01:08:04,120 mówisz, jest tak, aby j używać się. 1328 01:08:04,120 --> 01:08:09,560 Więc dla j - 1329 01:08:09,560 --> 01:08:14,656 Myślę, że to jest trudne - j = 1 << 31. 1330 01:08:14,656 --> 01:08:16,200 Czy to, co chcę? 1331 01:08:16,200 --> 01:08:18,470 Myślę, że to << 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 więc teraz zamiast - 1335 01:08:35,620 --> 01:08:38,370 ALI: Ciągle w ruchu j zamiast 1336 01:08:38,370 --> 01:08:40,520 Indeks to sprawdzić. 1337 01:08:40,520 --> 01:08:42,130 To nie jest takie złe. 1338 01:08:42,130 --> 01:08:43,960 Używamy podobnego rodzaju logiki. 1339 01:08:43,960 --> 01:08:46,202 Więc jeśli go back - 1340 01:08:46,202 --> 01:08:50,020 oh, ale to będzie stracić. 1341 01:08:50,020 --> 01:08:51,380 Okay, jesteś po prostu się go wpisać ponownie. 1342 01:08:51,380 --> 01:08:56,880 Jeśli zauważysz, że mamy 1 << j ilość razy, i byliśmy 1343 01:08:56,880 --> 01:09:02,279 inkrementacji j za każdym razem o jeden stopień, ale tym razem zamiast 1344 01:09:02,279 --> 01:09:06,010 robią przyrost j na górze wewnątrz pętli for. 1345 01:09:06,010 --> 01:09:10,890 Więc zamiast zawsze przesuwając go w dół - 1346 01:09:10,890 --> 01:09:15,220 ROB: Pierwsza iteracja pętli for mamy j jest 10000. 1347 01:09:15,220 --> 01:09:20,000 Następnej iteracji pętli for jest 01000. 1348 01:09:20,000 --> 01:09:22,380 Następna iteracja jest. 1349 01:09:22,380 --> 01:09:26,800 I 1 jest tylko zamiar utrzymać rozmnożeniowego, aż trafiliśmy bardzo 1350 01:09:26,800 --> 01:09:29,729 end, gdzie teraz jest to. 1351 01:09:29,729 --> 01:09:33,990 Kolejny, 1 będą wypychane, i J jest nie większa 1352 01:09:33,990 --> 01:09:35,090 niż lub równa 1. 1353 01:09:35,090 --> 01:09:38,380 Mogłem również położyć większy niż 0, sam różnicę. 1354 01:09:38,380 --> 01:09:41,580 A potem to wszystko. 1355 01:09:41,580 --> 01:09:43,720 Pytania? 1356 01:09:43,720 --> 01:09:44,760 Tak. 1357 01:09:44,760 --> 01:09:49,740 >> GŁOŚNIK 51: [niesłyszalne] 1358 01:09:49,740 --> 01:09:51,729 ROB: Więc to jest to samo co - 1359 01:09:51,729 --> 01:09:57,270 widziałeś j + = 3? 1360 01:09:57,270 --> 01:10:00,960 Tak samo jest w j = J + 3? 1361 01:10:00,960 --> 01:10:05,560 Można to zrobić praktycznie dla każdego operator w C. Tak j >> = 3 jest 1362 01:10:05,560 --> 01:10:10,490 równy j = J >> 3. 1363 01:10:13,980 --> 01:10:16,760 Tak, że działa również z operatorami bitowej. 1364 01:10:16,760 --> 01:10:19,630 I nie powinna włożyć 31 tutaj. 1365 01:10:19,630 --> 01:10:23,790 Powinienem umieścić numBits - 1. 1366 01:10:23,790 --> 01:10:25,380 ALI: Yay, żadnych magicznych liczb. 1367 01:10:25,380 --> 01:10:29,070 Okay, to jest 4:00, więc jeśli macie iść - ale czy to ma sens? 1368 01:10:29,070 --> 01:10:30,320 Czy macie jakieś pytania? 1369 01:10:33,920 --> 01:10:38,470 ROB: Byłem też rzuci się, że jeśli chcemy - 1370 01:10:38,470 --> 01:10:41,326 został on omówiony operatora trójskładnikowych w ogóle? 1371 01:10:41,326 --> 01:10:42,730 ALI: No 1372 01:10:42,730 --> 01:10:45,090 Jest dobrze. 1373 01:10:45,090 --> 01:10:46,970 ROB: Tak może wyglądać do niego na następny raz. 1374 01:10:51,030 --> 01:10:52,080 ALI: Dobra, naprawdę? 1375 01:10:52,080 --> 01:10:53,150 Teraz jesteś po prostu popisywać. 1376 01:10:53,150 --> 01:10:54,210 ROB: Nie, teraz it's - 1377 01:10:54,210 --> 01:11:00,490 jest to, co dostaje to zainteresowanie, a teraz pójdą na nią patrzeć. 1378 01:11:00,490 --> 01:11:02,640 Więc teraz, że robi to samo, w jednym kroku. 1379 01:11:05,150 --> 01:11:10,950 Więc najpierw sprawdź, jest i & j 1? 1380 01:11:10,950 --> 01:11:12,530 Czy to prawda? 1381 01:11:12,530 --> 01:11:17,000 Jeśli tak, należy wydrukować 1, w przeciwnym wypadku, należy wydrukować 0. 1382 01:11:17,000 --> 01:11:19,190 ALI: Ale robi to w inny sposób jest w porządku, jak również. 1383 01:11:19,190 --> 01:11:20,920 Ma taką samą logikę. 1384 01:11:20,920 --> 01:11:22,730 Więc to nie jest tak jak jeden jest - 1385 01:11:22,730 --> 01:11:24,620 ROB: W tym momencie, możemy pozbyć się tych klamrach, bo to tylko 1386 01:11:24,620 --> 01:11:27,190 jedna linia do pętli. 1387 01:11:27,190 --> 01:11:29,370 ALI: Ok, więc to ma sens? 1388 01:11:29,370 --> 01:11:30,370 To był rodzaj skoku. 1389 01:11:30,370 --> 01:11:34,870 Ale to był tylko rodzaj składni bardziej. 1390 01:11:34,870 --> 01:11:36,250 >> Cool? 1391 01:11:36,250 --> 01:11:37,500 Wszelkie inne pytania? 1392 01:11:40,880 --> 01:11:41,570 ROB: Dobrze. 1393 01:11:41,570 --> 01:11:42,310 ALI: Dobra, spoko. 1394 01:11:42,310 --> 01:11:43,560 Dzięki za przybycie do sekcji.