1 00:00:01,984 --> 00:00:07,450 [Powered by Google Translate] [Электронный статический звуки] 2 00:00:07,450 --> 00:00:11,320 ROB: Хорошо, так что мы только что привел вас в это CS50 пространства. 3 00:00:11,320 --> 00:00:12,325 ALI: Подождите, подождите обратно. 4 00:00:12,325 --> 00:00:13,175 Добро пожаловать в раздел! 5 00:00:13,175 --> 00:00:13,860 ROB: Добро пожаловать в раздел! 6 00:00:13,860 --> 00:00:14,742 ALI: Ура! 7 00:00:14,742 --> 00:00:16,840 ROB: Supersection! 8 00:00:16,840 --> 00:00:18,610 Али: Я Али, и это Роб. 9 00:00:18,610 --> 00:00:20,680 Итак, теперь мы расскажем пространства. 10 00:00:20,680 --> 00:00:23,650 ROB: Так что мы только что привел вас в это CS50 пространства. 11 00:00:23,650 --> 00:00:29,260 Вы будете использовать это много в ваших разделов в этом семестре. 12 00:00:29,260 --> 00:00:32,110 В принципе, мы уже имели загрузке устройства. 13 00:00:32,110 --> 00:00:38,630 И вы можете думать о CS50 пробелы как веб-интерфейс разговаривал с прибором 14 00:00:38,630 --> 00:00:40,670 что мы имеем на некоторые сервера где-то. 15 00:00:40,670 --> 00:00:42,990 Таким образом, вы можете запустить свой код в этом интерфейсе, и мы 16 00:00:42,990 --> 00:00:44,180 увидеть, как делать вещи. 17 00:00:44,180 --> 00:00:48,200 Вы также можете посмотреть на код других людей в этом разделе, и - 18 00:00:48,200 --> 00:00:51,920 ALI: И, как некоторые люди обнаружили, вы можете общаться людям на стороне. 19 00:00:51,920 --> 00:00:54,230 И мы все видим, она тоже, так что это интересно. 20 00:00:54,230 --> 00:00:55,655 Заходите, прийти и сесть. 21 00:00:55,655 --> 00:00:57,060 Садитесь. 22 00:00:57,060 --> 00:00:57,840 >> ROB: Итак, разделы - 23 00:00:57,840 --> 00:00:59,380 ALI: Нет, нет, вы, ребята, можете прийти. 24 00:00:59,380 --> 00:01:03,356 ROB: Разделы будет гораздо более интерактивным в этом семестре. 25 00:01:03,356 --> 00:01:04,180 ALI: О, он как - 26 00:01:04,180 --> 00:01:05,840 Ох. 27 00:01:05,840 --> 00:01:07,530 Хорошо, прохладно. 28 00:01:07,530 --> 00:01:15,630 Так что, если вы, ребята, просто приходят, вы можете перейти на эту ссылку, если я могу получить 29 00:01:15,630 --> 00:01:20,190 там, прямо там. 30 00:01:20,190 --> 00:01:22,780 Мы не можем написать, потому что нет места на плате, но ссылку 31 00:01:22,780 --> 00:01:27,160 прямо здесь, иди к этому на вашем компьютере, и вы войдете CS50 32 00:01:27,160 --> 00:01:29,810 Пространства, которое является довольно круто. 33 00:01:32,460 --> 00:01:33,830 Хорошо. 34 00:01:33,830 --> 00:01:35,370 Есть ли у вас проблемы? 35 00:01:35,370 --> 00:01:39,930 ROB: Таким образом, вы можете найти проблемы - 36 00:01:39,930 --> 00:01:42,720 Мы должны быть в состоянии написать это где-нибудь. 37 00:01:42,720 --> 00:01:50,040 Так что, если вы идете в cs50.net/psets и это хакер supersection - 38 00:01:50,040 --> 00:01:55,870 и вы идете в Hacker издание PSET один, посмотрите на спецификации 39 00:01:55,870 --> 00:01:57,620 где-то на странице - 40 00:02:01,940 --> 00:02:04,280 >> Али: В общем, в то время как Роб смотрит, что мы собираемся делать в 41 00:02:04,280 --> 00:02:06,650 раздел сегодня есть раздел проблем - 42 00:02:06,650 --> 00:02:07,600 ROB: - на странице восемь. 43 00:02:07,600 --> 00:02:09,300 ALI: - называется часть проблемы - 44 00:02:09,300 --> 00:02:10,280 ROB: Раздел вопросов. 45 00:02:10,280 --> 00:02:11,630 ALI: Извините, раздел вопросов. 46 00:02:11,630 --> 00:02:14,450 И это то, что мы собираемся перейти - 47 00:02:14,450 --> 00:02:16,370 те, что мы собираемся перейти на сегодняшний день в разделе. 48 00:02:16,370 --> 00:02:20,010 И мы собираемся, чтобы закодировать его на CS50 пространства, и мы надеемся, что будет работать. 49 00:02:20,010 --> 00:02:22,210 И мы можем только говорить через них. 50 00:02:22,210 --> 00:02:24,510 И вы, ребята, можете задавать вопросы, когда вы чувствуете - 51 00:02:24,510 --> 00:02:27,890 >> ROB: Итак, это добирается, чтобы быть обычным явлением в большинстве psets. 52 00:02:27,890 --> 00:02:31,000 Я думаю, что с этим, он говорит, вы не должны вручить эти вопросы дюйма 53 00:02:31,000 --> 00:02:36,780 Но идея в том, что эти вопросы ставятся на PSET, и вы можете прийти 54 00:02:36,780 --> 00:02:39,790 раздел, чтобы эти вопросы ответил. 55 00:02:39,790 --> 00:02:42,730 Или, если вы не придете в разделе, вы можете ответить на них по своему усмотрению или получать 56 00:02:42,730 --> 00:02:44,250 помощь в нерабочее время или что-то еще. 57 00:02:44,250 --> 00:02:47,540 Но эти вопросы, которые, как предполагается, подготовительные вас за проблема набора. 58 00:02:47,540 --> 00:02:50,910 А на хакера издание, много вопросов может быть просто о 59 00:02:50,910 --> 00:02:54,170 расширение текущих знаниях CS. 60 00:02:54,170 --> 00:02:55,370 ALI: Да, довольно много. 61 00:02:55,370 --> 00:02:57,950 >> Хорошо, таким образом, есть все на CS50 пространства? 62 00:02:57,950 --> 00:02:59,457 Привет, заходи 63 00:02:59,457 --> 00:03:00,828 Выступающий 1: Можем ли мы увидеть URL еще раз? 64 00:03:04,030 --> 00:03:07,000 Роб: Да, это будет легче, когда вы на самом деле в вашей секции и 65 00:03:07,000 --> 00:03:10,760 ваша TF просто может вам по электронной почте URL заранее. 66 00:03:10,760 --> 00:03:11,870 ALI: Yay, занять место. 67 00:03:11,870 --> 00:03:13,170 Есть места здесь. 68 00:03:13,170 --> 00:03:14,420 Передняя панель не так уж плохо. 69 00:03:17,112 --> 00:03:18,362 Что? 70 00:03:20,650 --> 00:03:23,590 Таким образом, CS50 пространства, мы получаем там. 71 00:03:23,590 --> 00:03:26,760 Кто-нибудь есть какие-либо вопросы, прежде чем мы перейдем к - что? 72 00:03:26,760 --> 00:03:28,060 ROB: Там нет даже мел. 73 00:03:28,060 --> 00:03:29,270 [Неразборчиво] 74 00:03:29,270 --> 00:03:31,540 ALI: Извините. 75 00:03:31,540 --> 00:03:32,950 Вы можете использовать ваши ногти? 76 00:03:32,950 --> 00:03:38,210 Мы находимся в очень низких технологий комната для очень высокотехнологичный класс. 77 00:03:38,210 --> 00:03:40,795 Ладно, это все доброе? 78 00:03:40,795 --> 00:03:44,310 Кто-нибудь есть еще вопросы по этому поводу? 79 00:03:44,310 --> 00:03:48,540 Как я уже говорил, мы собираемся пройти через раздел вопросов 80 00:03:48,540 --> 00:03:51,340 PSET спецификаций. 81 00:03:51,340 --> 00:03:53,490 Таким образом, есть только несколько проблем, которые мы собираемся 82 00:03:53,490 --> 00:03:57,490 код в CS50 пространства. 83 00:03:57,490 --> 00:03:58,740 Все ли хорошо? 84 00:04:01,010 --> 00:04:01,360 Хорошо. 85 00:04:01,360 --> 00:04:02,312 Хорошо? 86 00:04:02,312 --> 00:04:04,260 ROB: Есть ли у Вас ноутбук? 87 00:04:04,260 --> 00:04:05,150 ALI: Вы можете пообщаться с Лукасом. 88 00:04:05,150 --> 00:04:06,960 Он сидит рядом с вами. 89 00:04:06,960 --> 00:04:10,030 Склеивание времени. 90 00:04:10,030 --> 00:04:10,990 >> ROB: Итак, начнем с первой проблемой? 91 00:04:10,990 --> 00:04:11,260 ALI: Да. 92 00:04:11,260 --> 00:04:11,820 Мы можем начать. 93 00:04:11,820 --> 00:04:12,390 Вы хотите меня - 94 00:04:12,390 --> 00:04:13,700 Я могу пойти. 95 00:04:13,700 --> 00:04:16,666 Итак, мы пойдем в PSET функции. 96 00:04:16,666 --> 00:04:17,640 Ах, зачем же это такое - 97 00:04:17,640 --> 00:04:18,890 ROB: Control. 98 00:04:21,769 --> 00:04:25,770 ALI: Итак, мы идем в ответ на эти вещи, а? 99 00:04:25,770 --> 00:04:26,190 ROB: О, да. 100 00:04:26,190 --> 00:04:27,280 Так что - 101 00:04:27,280 --> 00:04:29,675 ALI: О, сделал все часы Роба главных ролях шорты? 102 00:04:32,430 --> 00:04:33,360 Хорошо, прохладно. 103 00:04:33,360 --> 00:04:36,870 ROB: Да, я не думаю, что мы обязательно ожидал, что вы есть 104 00:04:36,870 --> 00:04:40,650 смотрел его до приезда в данном разделе, но мы можем обсуждать эти 105 00:04:40,650 --> 00:04:43,870 проблемы заранее, так как они, в разделе вопросов вещи. 106 00:04:43,870 --> 00:04:46,480 Так что если вы еще не смотрели его, не волнуйтесь. 107 00:04:46,480 --> 00:04:48,630 Те, кто может попытаться ответить. 108 00:04:48,630 --> 00:04:53,875 >> Итак, первый вопрос, что является пре-процессоре, каким # включить 109 00:04:53,875 --> 00:04:56,080 относиться? 110 00:04:56,080 --> 00:04:58,440 Так кто-нибудь есть ответ на это? 111 00:04:58,440 --> 00:04:59,320 Али: Вы, ребята, можете говорить это. 112 00:04:59,320 --> 00:05:00,308 Конечно, идти вперед. 113 00:05:00,308 --> 00:05:03,766 SPEAKER 2: # включить некоторые заранее написанные кодом, и вместо того, 114 00:05:03,766 --> 00:05:08,706 копирование и вставка его в вашу программу, просто говорю включить его, 115 00:05:08,706 --> 00:05:14,140 предварительной обработки знает, что он там и что он должен добавить его в 116 00:05:14,140 --> 00:05:17,520 позже или раньше ничего не происходит. 117 00:05:17,520 --> 00:05:18,466 ALI: Да, удивительный. 118 00:05:18,466 --> 00:05:19,440 Cool. 119 00:05:19,440 --> 00:05:23,820 ROB: Итак, когда вы на самом деле компиляции программы, предварительно процессор это 120 00:05:23,820 --> 00:05:25,230 Первым шагом. 121 00:05:25,230 --> 00:05:27,620 Компиляция происходит в четыре большие шаги. 122 00:05:27,620 --> 00:05:31,120 Так предварительной обработки является первой большой, и именно это парень, который идет 123 00:05:31,120 --> 00:05:33,510 путем и ищет все эти хэш-символы. 124 00:05:33,510 --> 00:05:36,610 И любая строка, которая начинается с символа, предварительно процессор смотрит на него и видит, 125 00:05:36,610 --> 00:05:37,880 если он может его обработать. 126 00:05:37,880 --> 00:05:43,800 Таким образом, # включить рассказывает предварительной обработки искать какие-то cs50.h 127 00:05:43,800 --> 00:05:47,830 файл и просто скопировать и вставить его содержимое в этот файл. 128 00:05:47,830 --> 00:05:50,970 Таким образом, вы действительно можете # включить все, что угодно, но это в основном будет 129 00:05:50,970 --> 00:05:53,700 . Ч файлы. 130 00:05:53,700 --> 00:05:55,820 Мы еще не дошли до # определить еще, так что не имеет значения. 131 00:05:55,820 --> 00:05:57,620 Али: Да, мы хорошие на том. 132 00:05:57,620 --> 00:05:59,450 Кто-нибудь есть какие-либо вопросы по этому поводу? 133 00:05:59,450 --> 00:06:01,090 Разве мы хорошо? 134 00:06:01,090 --> 00:06:02,430 Следующий вопрос. 135 00:06:02,430 --> 00:06:07,096 >> Выступающий 3: В краткосрочной было что-то о С, а также.? 136 00:06:07,096 --> 00:06:09,110 Разве что соответствующие или это не имеет значения? 137 00:06:09,110 --> 00:06:11,210 ROB: о с с предварительной обработки.? 138 00:06:11,210 --> 00:06:13,990 Выступающий 3: Да, или я сделал что-то? 139 00:06:13,990 --> 00:06:18,290 ROB: Так коротко можно было бы показывать предварительной обработки этого файла и 140 00:06:18,290 --> 00:06:24,240 . выводить его в другой файл с, так что вы можете предварительно обработать этот файл - 141 00:06:24,240 --> 00:06:30,000 когда вы просто работать, как, сделать привет или лязг hello.c, вы делаете все 142 00:06:30,000 --> 00:06:31,730 компиляции в один большой шаг. 143 00:06:31,730 --> 00:06:34,780 Но вы можете сделать это явно на отдельные шаги. 144 00:06:34,780 --> 00:06:36,950 Итак, сначала вы можете предварительно обработать. 145 00:06:36,950 --> 00:06:42,260 Тогда вы можете скомпилировать, то можно собрать, а затем вы можете связать. 146 00:06:42,260 --> 00:06:43,620 Мы доберемся до тех, других. 147 00:06:43,620 --> 00:06:47,410 Но предварительной обработки, вы вроде предварительной обработки, а затем он переходит в 148 00:06:47,410 --> 00:06:49,270 другое. с файлом. 149 00:06:49,270 --> 00:06:51,430 Потому что предварительная обработка действительно не изменится ничего. 150 00:06:51,430 --> 00:06:52,800 Это просто куча копирования и вставки. 151 00:06:52,800 --> 00:06:56,760 Вы можете вручную скопировать и вставить его самостоятельно. 152 00:06:56,760 --> 00:06:59,630 ALI. И чтобы было ясно, с файл представляет собой файл C, так что это 153 00:06:59,630 --> 00:07:00,930 написано в код C. 154 00:07:00,930 --> 00:07:03,300 Таким образом, он собирается из кода C кода C. 155 00:07:03,300 --> 00:07:05,210 Ты просто добавить больше кода с фунта. 156 00:07:05,210 --> 00:07:08,575 ROB: Когда вы предварительно обработаны, она все еще действительный файл C. 157 00:07:08,575 --> 00:07:09,940 Выступающий 3: Хорошо. 158 00:07:09,940 --> 00:07:10,540 ALI: Хороший вопрос. 159 00:07:10,540 --> 00:07:11,370 Мне это нравится. 160 00:07:11,370 --> 00:07:12,755 Хорошо, следующий вопрос. 161 00:07:17,870 --> 00:07:19,660 >> Что такое компилятор? 162 00:07:19,660 --> 00:07:20,824 Любой? 163 00:07:20,824 --> 00:07:21,286 Да. 164 00:07:21,286 --> 00:07:24,650 Выступающий 4: Он изменяет предварительной обработки кода в сборке. 165 00:07:24,650 --> 00:07:25,110 ALI: Perfect. 166 00:07:25,110 --> 00:07:25,390 ROB: Да. 167 00:07:25,390 --> 00:07:25,720 ALI: Круто. 168 00:07:25,720 --> 00:07:28,270 ROB: Так вот что компилятор делает специально 169 00:07:28,270 --> 00:07:30,740 когда мы используем Clang. 170 00:07:30,740 --> 00:07:35,100 В самом общем смысле, компилятор точно так же как с кодом на одном языке 171 00:07:35,100 --> 00:07:37,070 и превращение его в другой язык. 172 00:07:37,070 --> 00:07:38,370 Таким образом, в C - 173 00:07:38,370 --> 00:07:43,750 или, ну, Clang принимает код, который находится в C и превращения его в сборку. 174 00:07:43,750 --> 00:07:46,560 И вы не должны быть в состоянии понять сборку на всех. 175 00:07:46,560 --> 00:07:49,830 Но это язык, на котором он превратив его в. 176 00:07:49,830 --> 00:07:50,230 >> ALI: Хорошо. 177 00:07:50,230 --> 00:07:52,920 И потом, что это ассемблер? 178 00:07:52,920 --> 00:07:54,270 Любой? 179 00:07:54,270 --> 00:07:56,810 SPEAKER 5: [неразборчиво] в двоичную? 180 00:07:56,810 --> 00:07:57,260 ALI: Извините, что? 181 00:07:57,260 --> 00:07:58,760 SPEAKER 5: [неразборчиво] в двоичную? 182 00:07:58,760 --> 00:07:59,260 ROB: Да. 183 00:07:59,260 --> 00:07:59,880 ALI: Да. 184 00:07:59,880 --> 00:08:01,960 ROB: Так ассемблер - 185 00:08:01,960 --> 00:08:05,830 ассемблерный код очень, очень близко к тому, что ваш компьютер может понять, 186 00:08:05,830 --> 00:08:09,390 Но помните, что он не совсем понимает текст 187 00:08:09,390 --> 00:08:10,630 то есть ассемблере. 188 00:08:10,630 --> 00:08:14,570 Вы должны преобразовать его в прямой 1 и 0. 189 00:08:14,570 --> 00:08:17,000 Это похоже на процесс прямого перевода. 190 00:08:17,000 --> 00:08:19,450 Мы могли бы просто дать вам таблицу, которая отображает то, что каждый 191 00:08:19,450 --> 00:08:21,880 инструкция по монтажу средств. 192 00:08:21,880 --> 00:08:24,340 Но ассемблер просто делать этот перевод для вас. 193 00:08:24,340 --> 00:08:28,790 Это преобразование кода сборки в 1 и 0. 194 00:08:28,790 --> 00:08:30,870 >> ALI: И потом, для последнего, что компоновщик? 195 00:08:30,870 --> 00:08:35,070 И как-lcs50 относиться? 196 00:08:35,070 --> 00:08:37,010 Любой? 197 00:08:37,010 --> 00:08:41,440 ROB: Это самая сложная и наименее объяснил один в компилятор видео. 198 00:08:41,440 --> 00:08:48,980 ALI: Кто-нибудь помнит проводы lcs50 в команде? 199 00:08:48,980 --> 00:08:50,690 SPEAKER 6: Когда Вы зашли на сделать. 200 00:08:50,690 --> 00:08:51,980 ALI: Это в сделать. 201 00:08:51,980 --> 00:08:55,780 Да, прохладно, хорошо. 202 00:08:55,780 --> 00:09:02,024 Есть ли какие-либо предположения или расплывчатые - да, идут. 203 00:09:02,024 --> 00:09:06,370 SPEAKER 7: Я не уверен, потому что ваша короткая было действительно [неразборчиво], но это было 204 00:09:06,370 --> 00:09:12,244 что-то делать отдельные файлы с каждой библиотеке, а затем положить 205 00:09:12,244 --> 00:09:13,620 их все вместе в одной библиотеке? 206 00:09:13,620 --> 00:09:14,400 ROB: Да. 207 00:09:14,400 --> 00:09:23,000 Поэтому, когда у вас есть hello.c, это очень простой программы. 208 00:09:23,000 --> 00:09:25,570 Вы действительно делаете только одну вещь в этом. 209 00:09:25,570 --> 00:09:27,400 Но когда вы попадаете в других программах - 210 00:09:27,400 --> 00:09:31,700 и я думаю, даже если вы GetString в своих программах, вам нужно, чтобы начать 211 00:09:31,700 --> 00:09:33,830 включая другие файлы. 212 00:09:33,830 --> 00:09:38,000 Таким образом, библиотека CS50 является одним из таких файлов, в которых у нас есть реализаций 213 00:09:38,000 --> 00:09:40,750 из GetString и GetInt и все эти вещи. 214 00:09:40,750 --> 00:09:45,540 Так что компоновщик делает это идет вокруг, глядя через все эти 215 00:09:45,540 --> 00:09:49,400 Файлы, видя, где функции определены, убедившись, что когда я звоню 216 00:09:49,400 --> 00:09:52,440 GetString где-то, он знает, что GetString означает, что это 217 00:09:52,440 --> 00:09:54,910 GetString более в CS50 библиотеки. 218 00:09:54,910 --> 00:09:58,895 Таким образом, компоновщик просто принимает все эти файлы, разбивает их вместе, и теперь 219 00:09:58,895 --> 00:10:01,020 у вас есть исполняемый файл. 220 00:10:01,020 --> 00:10:05,600 Так что имейте в виду, что если вы используете CS50 библиотеку, необходимо как 221 00:10:05,600 --> 00:10:10,370 # Включить в верхней части, а затем и в вашей марки команду, как вы 222 00:10:10,370 --> 00:10:12,630 сказал, вы должны иметь-lcs50. 223 00:10:12,630 --> 00:10:15,720 Таким образом, вы не можете просто есть. 224 00:10:15,720 --> 00:10:18,294 Так что это просто что-то, чтобы иметь в виду на будущее. 225 00:10:18,294 --> 00:10:22,550 >> SPEAKER 8: Итак, предположим, что была еще одна библиотека, как cs51.h, мы бы 226 00:10:22,550 --> 00:10:26,780 Также нужно добавить, lcs51? 227 00:10:26,780 --> 00:10:32,390 ROB: Единственная причина этого-lcs50 работает прекрасно, потому что мы есть, что набор 228 00:10:32,390 --> 00:10:35,800 в определенное место в вашей техникой, так что он знает, что 229 00:10:35,800 --> 00:10:38,550 -Lcs50 средств. 230 00:10:38,550 --> 00:10:43,240 Мы могли бы просто дать вам cs50.c файл, а затем вы можете скомпилировать его, сказав, 231 00:10:43,240 --> 00:10:49,050 Clang hello.c cs50.c, а затем это сделает ваш исполняемый файл, положив 232 00:10:49,050 --> 00:10:50,350 эти два файла вместе. 233 00:10:50,350 --> 00:10:56,520 Она знает, что-lcs50 означает cs50.c более в некотором каталоге, который мы указали в 234 00:10:56,520 --> 00:10:58,350 Ваши приборы. 235 00:10:58,350 --> 00:11:04,290 Так что если вы хотели cs51.c быть точно определен путем просто говорю-lcs51, 236 00:11:04,290 --> 00:11:06,760 то мы также должны положить его в этом каталоге поэтому он знает, где 237 00:11:06,760 --> 00:11:08,636 искать. 238 00:11:08,636 --> 00:11:10,510 ALI: Каким был ваш вопрос? 239 00:11:10,510 --> 00:11:13,975 >> SPEAKER 7: Почему вы должны связать CS50 240 00:11:13,975 --> 00:11:18,940 если - wasn't его скопировать / вставить на первом этапе, когда вы предварительно обработанные это? 241 00:11:18,940 --> 00:11:19,700 ALI: Вы хотите взять? 242 00:11:19,700 --> 00:11:20,880 ROB: Конечно. 243 00:11:20,880 --> 00:11:28,028 Так cs50.h файла отдельно от cs50.c файл C. 244 00:11:28,028 --> 00:11:33,652 Вы добрались до прототипов функций в классе? 245 00:11:33,652 --> 00:11:34,350 Хорошо. 246 00:11:34,350 --> 00:11:40,255 Так в основном, файл cs50.h просто будет скопировать и вставить - 247 00:11:40,255 --> 00:11:44,040 ALI: Вы, ребята, знаете, что подписи? 248 00:11:44,040 --> 00:11:46,580 Итак, довольно много, если вы посмотрите на - 249 00:11:46,580 --> 00:11:50,530 ROB: Давайте представим, cs50.h нет. 250 00:11:50,530 --> 00:11:52,960 Теперь этот файл - 251 00:11:52,960 --> 00:11:56,090 Вы делаете = GetString строка с. 252 00:11:56,090 --> 00:11:59,350 Но когда мы дошли до этой точки в коде, он понятия не имеет, что 253 00:11:59,350 --> 00:12:00,230 GetString есть. 254 00:12:00,230 --> 00:12:02,600 Он знает, что это функция, так как вы называете его. 255 00:12:02,600 --> 00:12:06,500 Но он не знает, что это на самом деле должна возвращать строку. 256 00:12:06,500 --> 00:12:14,530 Так как я уже сказал, строка S = GetInt, это не имеет никакого смысла, так как 257 00:12:14,530 --> 00:12:17,530 Вы подписанием целого числа в строку. 258 00:12:17,530 --> 00:12:22,270 Но он не знает, что GetString имеет смысл, потому что она не 259 00:12:22,270 --> 00:12:24,380 Известно, что GetString возвращает строку. 260 00:12:24,380 --> 00:12:28,220 Так что cs50.h говорит что-то вроде этого. 261 00:12:33,070 --> 00:12:37,750 ALI: Так что Роб печатает том, что это обещание таким образом, что она собирается 262 00:12:37,750 --> 00:12:41,280 есть эта функция называется GetString. 263 00:12:41,280 --> 00:12:45,250 ROB: Это все, что cs50.h будет скопировать и вставить сюда, а также 264 00:12:45,250 --> 00:12:47,620 GetInt как и все эти вещи. 265 00:12:47,620 --> 00:12:51,520 И это просто говорит, что GetString ли возвращать строку. 266 00:12:51,520 --> 00:12:54,830 Вы не знаете, как это реализовано, но когда мы доберемся до этой линии, в настоящее время 267 00:12:54,830 --> 00:12:57,760 он знает, что правильно возвращает строку. 268 00:12:57,760 --> 00:13:03,022 >> SPEAKER 9: Итак, если мы не беспокоились # включить вещь, и вместо 269 00:13:03,022 --> 00:13:07,130 просто написал прототип для тех, что мы на самом деле собираемся использовать? 270 00:13:07,130 --> 00:13:07,330 ROB: Да. 271 00:13:07,330 --> 00:13:08,870 Так давайте запустим это. 272 00:13:08,870 --> 00:13:09,110 SPEAKER 9: Что это? 273 00:13:09,110 --> 00:13:13,670 Так, по умолчанию, он будет делать-л до CS50 только потому, что -. 274 00:13:13,670 --> 00:13:14,740 ROB: - выражение. 275 00:13:14,740 --> 00:13:19,370 Али: Да, потому что, как вы сказали, это в марку файл. 276 00:13:19,370 --> 00:13:24,040 ROB: cs50.h также, случается, ЬурейеЕ символ * в строку. 277 00:13:24,040 --> 00:13:26,950 Вы можете полностью игнорировать то, что это означает, что в настоящее время. 278 00:13:26,950 --> 00:13:31,430 Но это также то, что включено в cs50.h. 279 00:13:31,430 --> 00:13:34,230 Так что теперь все работает прекрасно. 280 00:13:34,230 --> 00:13:40,770 Она работает точно так же, как это было, когда мы только что 281 00:13:40,770 --> 00:13:45,120 # включить. 282 00:13:45,120 --> 00:13:49,200 И так происходит, в том числе cs50.h более-включают такие вещи, что вам нужно - 283 00:13:49,200 --> 00:13:53,080 как, вы не используете GetInt в этой программе, но это не имеет значения. 284 00:13:53,080 --> 00:13:55,010 Это будет просто игнорировать его. 285 00:13:55,010 --> 00:14:02,400 ALI: А потом, когда вы делаете-lcs50 здесь и здесь, то, что происходит 286 00:14:02,400 --> 00:14:05,290 на то, что это имеющей фактическое реализуемых код. 287 00:14:05,290 --> 00:14:07,530 Так вот где он на самом деле, делать - 288 00:14:07,530 --> 00:14:09,090 написание кода для GetString. 289 00:14:09,090 --> 00:14:11,180 Так что это не просто обещание больше. 290 00:14:11,180 --> 00:14:16,520 Это на самом деле переживает и принимает строку и все такое. 291 00:14:16,520 --> 00:14:17,600 Смысл? 292 00:14:17,600 --> 00:14:22,640 Вопросы? Хорошо. 293 00:14:22,640 --> 00:14:24,466 Cool Beans. 294 00:14:24,466 --> 00:14:27,630 >> ROB: Теперь мы можем перейти к собственно код. 295 00:14:27,630 --> 00:14:28,780 ALI: Хорошо. 296 00:14:28,780 --> 00:14:33,340 Так вот первая проблема. 297 00:14:33,340 --> 00:14:36,910 Так он говорит написать программу, которая запрашивает у пользователя строчные 298 00:14:36,910 --> 00:14:40,540 буква, а затем преобразует его в верхний регистр без использования Побитовая 299 00:14:40,540 --> 00:14:43,590 операций, в соответствии с образцом выхода ниже. 300 00:14:43,590 --> 00:14:48,780 Таким образом, вы видите, вы запустите программу с. / A.out, и тогда вы 301 00:14:48,780 --> 00:14:53,320 собираюсь поставить в нижнем регистре, а затем ваша программа должна выдать капитал 302 00:14:53,320 --> 00:15:00,590 A. Так почему бы не вы, ребята, все его застрелили на CS50 пространства? 303 00:15:00,590 --> 00:15:03,360 Так что вы, ребята, все это может пойти сюда. 304 00:15:03,360 --> 00:15:06,650 И вы можете удалить весь код здесь. 305 00:15:06,650 --> 00:15:12,140 И тогда вы можете пойти дальше и начать кодирование вещь. 306 00:15:12,140 --> 00:15:14,590 ROB: Вы, вероятно, хотите использовать GetChar, это 307 00:15:14,590 --> 00:15:16,190 включены в CS50 библиотеки. 308 00:15:16,190 --> 00:15:18,770 ALI: Я думаю, было бы лучше, если вы сохраните верхней части. 309 00:15:21,452 --> 00:15:23,805 Таким образом, вы можете просто изменить вещи в середину. 310 00:15:28,710 --> 00:15:29,070 Идем дальше и работать. 311 00:15:29,070 --> 00:15:30,530 Не стесняйтесь работать друг с другом. 312 00:15:30,530 --> 00:15:32,360 Роб: И вы можете задавать вопросы, если у вас есть - 313 00:15:32,360 --> 00:15:33,450 >> SPEAKER 10: Что такое операция побитового? 314 00:15:33,450 --> 00:15:35,100 ROB: так, не обращайте внимания, что по этой проблеме. 315 00:15:35,100 --> 00:15:36,330 ALI: Если вы не знаете, что это хорошо. 316 00:15:36,330 --> 00:15:38,300 ROB: Мы собираемся использовать его в следующей проблемой. 317 00:15:38,300 --> 00:15:40,750 Но если вы не знаете, что оператор побитового в том, что все в порядке. 318 00:15:40,750 --> 00:15:43,575 SPEAKER 10: Является ли, что, как превратить его в ASCII код? 319 00:15:43,575 --> 00:15:44,050 ALI: Нет 320 00:15:44,050 --> 00:15:44,750 ROB: Нет. 321 00:15:44,750 --> 00:15:46,220 Вы можете сделать это по этой проблеме. 322 00:15:46,220 --> 00:15:48,280 SPEAKER 10: Как ты это делаешь? 323 00:15:48,280 --> 00:15:52,460 Так что, если бы у меня было где-то писать - 324 00:15:52,460 --> 00:15:54,670 ALI: Или что-то писать. 325 00:15:54,670 --> 00:15:56,780 ROB: Я мог бы просто какая-то типа в этом. 326 00:15:56,780 --> 00:15:59,045 ALI: тип на самом верху. 327 00:15:59,045 --> 00:16:01,390 ROB: О, я сижу на микрофон. 328 00:16:01,390 --> 00:16:10,860 >> Итак, мы видели в лекции, что ASCII значение для столицы составляет 65 лет. 329 00:16:10,860 --> 00:16:13,670 И капитала B будет 66, и так далее. 330 00:16:13,670 --> 00:16:20,860 Таким образом, вы буквально можете использовать 'A' для обозначения числа 65. 331 00:16:20,860 --> 00:16:24,600 Мол, это значение 65. 332 00:16:24,600 --> 00:16:30,950 Я могу сделать что-то вроде Int х = 100 - 'A'. А теперь х будет иметь значение 333 00:16:30,950 --> 00:16:33,810 100 - 65. 334 00:16:33,810 --> 00:16:36,708 ALI: Вы можете бежать, что и показать, что. 335 00:16:36,708 --> 00:16:38,420 Ну, может быть, нет. 336 00:16:38,420 --> 00:16:38,600 Ничего. 337 00:16:38,600 --> 00:16:40,970 ROB: Я должен был распечатать его. 338 00:16:40,970 --> 00:16:43,730 SPEAKER 10: Как превратить его обратно в характере? 339 00:16:43,730 --> 00:16:46,800 ALI: Так что если вы не - 340 00:16:46,800 --> 00:16:51,450 Вы просто заставить его быть символ, равны. 341 00:16:51,450 --> 00:16:53,630 ROB: Так что есть - 342 00:16:53,630 --> 00:16:58,440 Различие между символов и целое только с точки зрения размера. 343 00:16:58,440 --> 00:17:01,230 Таким образом, целое бывает, чтобы иметь возможность представлять вещи 344 00:17:01,230 --> 00:17:02,600 на, вроде бы, четыре миллиарда. 345 00:17:02,600 --> 00:17:05,839 Символ может только представлять вещи вплоть до 255. 346 00:17:05,839 --> 00:17:08,390 Но нет никакой разницы между ними, кроме этого. 347 00:17:08,390 --> 00:17:12,339 Таким образом, можно сказать, символ с = 65. 348 00:17:12,339 --> 00:17:24,204 Это равносильно тому, символ с равным 'A'. 349 00:17:24,204 --> 00:17:25,210 ALI: О, нет. 350 00:17:25,210 --> 00:17:26,710 Это не реально сэкономить вещи. 351 00:17:26,710 --> 00:17:28,130 ROB: Нет, вы не можете этого сделать. 352 00:17:28,130 --> 00:17:31,610 ALI: Это просто - 353 00:17:31,610 --> 00:17:34,920 [Стоны] 354 00:17:34,920 --> 00:17:40,700 >> ROB: Ладно, так что Али был просто написал программу, которая сначала печатает 100 - 355 00:17:40,700 --> 00:17:46,290 'A' как целое число, которое было 35, как мы ожидаем, потому что 100 минус ASCII 356 00:17:46,290 --> 00:17:48,580 значение равно 65. 357 00:17:48,580 --> 00:17:54,100 Потом распечатать с помощью% C, что означает, интерпретировать его как символ. 358 00:17:54,100 --> 00:17:57,050 Так что 100 - это 35. 359 00:17:57,050 --> 00:18:00,990 Интерпретация, что в качестве символа, случается, хэш-символа. 360 00:18:00,990 --> 00:18:06,160 Если вы посмотрите на asciitable.com или любой другой, вы увидите, что 35 является 361 00:18:06,160 --> 00:18:07,410 хэш-символа. 362 00:18:09,940 --> 00:18:12,700 ALI: Хорошо, любые другие разъяснения о проблеме? 363 00:18:16,000 --> 00:18:18,180 Ладно, вы, ребята, можете пойти дальше и сделать это тогда. 364 00:18:18,180 --> 00:18:20,330 Не стесняйтесь задавать вопросы или разговаривать друг с другом. 365 00:18:20,330 --> 00:18:24,390 Или, если вы уже сделали, вы можете расслабиться. 366 00:18:24,390 --> 00:18:29,640 >> Лукас: Являются ли они того же класса, все строчные буквы в порядке и 367 00:18:29,640 --> 00:18:32,923 Также заглавными также в порядке, потому что это что-то полезное для 368 00:18:32,923 --> 00:18:33,990 проблемы. 369 00:18:33,990 --> 00:18:35,620 ALI: Хороший вопрос, Лукас. 370 00:18:35,620 --> 00:18:37,430 Таким образом, вы, ребята, все это взял? 371 00:18:37,430 --> 00:18:37,640 SPEAKER 11: Да. 372 00:18:37,640 --> 00:18:39,535 Вот как вы это делаете, не так ли? 373 00:18:39,535 --> 00:18:39,960 ALI: Верно. 374 00:18:39,960 --> 00:18:40,415 ROB: Да. 375 00:18:40,415 --> 00:18:47,270 SPEAKER 11: [неразборчиво] 376 00:18:47,270 --> 00:18:48,330 ALI: Все правильно. 377 00:18:48,330 --> 00:18:49,350 ROB: Какой вопрос спрашиваете? 378 00:18:49,350 --> 00:18:50,590 Просто для преобразования - 379 00:18:50,590 --> 00:18:52,560 ALI: преобразование нижнего регистра в верхний регистр. 380 00:18:52,560 --> 00:18:53,100 Вот и все. 381 00:18:53,100 --> 00:18:54,700 ROB: Хорошо. 382 00:18:54,700 --> 00:18:56,180 ALI: Должны ли мы писать? 383 00:18:56,180 --> 00:18:59,340 Я думаю, мы просто смотрим на кого-то другого. 384 00:18:59,340 --> 00:19:07,140 ROB: Так что для тех, кто мог бы застрять, способ - 385 00:19:07,140 --> 00:19:15,160 если у меня есть некоторый символ с, скажем, это происходит с буквой D. 386 00:19:15,160 --> 00:19:20,760 Так что теперь, как я могу выяснить, какие буквы алфавита С? 387 00:19:20,760 --> 00:19:25,620 Не D, но я имею в виду, D, случается, четвертая буква алфавита. 388 00:19:25,620 --> 00:19:28,910 И если мы начнем отсчет с 0, то это третья буква алфавита. 389 00:19:28,910 --> 00:19:36,240 Так что, если это 0, B = 1, C = 2, D 3, как я могу выяснить, внутр позиции - 390 00:19:36,240 --> 00:19:40,780 какую позицию в алфавите C находится в? 391 00:19:40,780 --> 00:19:42,333 У кого-нибудь есть идеи? 392 00:19:42,333 --> 00:19:45,440 Али: Я думаю, что все они кодирования. 393 00:19:45,440 --> 00:19:46,440 ROB: А как насчет первого? 394 00:19:46,440 --> 00:19:48,608 SPEAKER 12: Так что это, вычесть первый? 395 00:19:48,608 --> 00:19:49,030 ROB: Да. 396 00:19:49,030 --> 00:19:49,950 ALI: Да, удивительный. 397 00:19:49,950 --> 00:19:51,765 Таким образом, можно сделать капитал D - 398 00:19:51,765 --> 00:19:52,840 ой, извините. 399 00:19:52,840 --> 00:19:55,620 Вы берете характер и вычесть первую, как вы сказали. 400 00:19:55,620 --> 00:20:03,940 ROB: D Так что, если это что-то вроде 68, и мы вычитаем, что на 65, то получим 401 00:20:03,940 --> 00:20:07,130 3, говоря нам, что D является третьей буквы алфавита 402 00:20:07,130 --> 00:20:09,290 начиная с 0. 403 00:20:09,290 --> 00:20:11,310 Таким образом, вы можете его использовать. 404 00:20:11,310 --> 00:20:13,830 Теперь мы знаем, что буквы алфавита, с точки зрения 405 00:20:13,830 --> 00:20:16,060 заглавные буквы, или - 406 00:20:16,060 --> 00:20:18,330 мы могли бы сделать то же самое для строчных букв, чтобы выяснить, что 407 00:20:18,330 --> 00:20:20,170 строчные позиции мы дюйма 408 00:20:20,170 --> 00:20:25,690 И мы можем использовать, чтобы затем преобразовать в верхний регистр помощью 409 00:20:25,690 --> 00:20:26,970 очень похожие идеи. 410 00:20:31,470 --> 00:20:32,670 Спросите предложения? 411 00:20:32,670 --> 00:20:35,810 >> ALI: Ребята, вы - Подожди, я не знаю, как далеко вы, ребята. 412 00:20:35,810 --> 00:20:40,060 Ли большинство из вас сделали, вы все еще работает, ты застрял? 413 00:20:40,060 --> 00:20:42,020 Вы, ребята, можете кричать - 414 00:20:42,020 --> 00:20:42,330 застрял. 415 00:20:42,330 --> 00:20:43,210 Один человек застрял. 416 00:20:43,210 --> 00:20:43,560 Cool. 417 00:20:43,560 --> 00:20:44,700 Я, как правило, застрял, тоже. 418 00:20:44,700 --> 00:20:45,415 SPEAKER 13: я сделал. 419 00:20:45,415 --> 00:20:46,410 ALI: вы сделали? 420 00:20:46,410 --> 00:20:47,480 Хорошо. 421 00:20:47,480 --> 00:20:47,935 Готово. 422 00:20:47,935 --> 00:20:49,300 SPEAKER 13: [неразборчиво] 423 00:20:49,300 --> 00:20:50,600 ALI: Да, здорово. 424 00:20:50,600 --> 00:20:53,720 Вы проверяете, что это в нижнем регистре форме? 425 00:20:53,720 --> 00:20:56,730 Хорошо, прохладно. 426 00:20:56,730 --> 00:20:59,882 Где находятся другие люди? 427 00:20:59,882 --> 00:21:06,140 Помогло ли это намек помочь вам, как и для не-прилипание себя? 428 00:21:06,140 --> 00:21:09,778 SPEAKER 14: Не совсем, но только потому, что я не знаю, я не 429 00:21:09,778 --> 00:21:11,590 перевариванием еще. 430 00:21:11,590 --> 00:21:12,640 ALI: Хорошо, прохладно. 431 00:21:12,640 --> 00:21:13,431 Вы хотите попробовать - 432 00:21:13,431 --> 00:21:16,140 или вы хотите пойти и поговорить? 433 00:21:16,140 --> 00:21:18,590 >> ROB: То, что я собираюсь сказать, - 434 00:21:18,590 --> 00:21:19,890 так что использование этого. 435 00:21:19,890 --> 00:21:22,650 Вы понимаете, как мы получили то, что положение в алфавите 436 00:21:22,650 --> 00:21:24,820 Письмо находится в? 437 00:21:24,820 --> 00:21:30,616 SPEAKER 14: Итак, когда вы положили вещи в одной цитате, 438 00:21:30,616 --> 00:21:35,030 , которая возвращает число? 439 00:21:35,030 --> 00:21:37,100 ROB: Да. 440 00:21:37,100 --> 00:21:40,840 Она будет переведена на ASCII значение он представляет. 441 00:21:40,840 --> 00:21:43,350 Так что вы хотите пойти в таблице ASCII или что это такое? 442 00:21:46,456 --> 00:21:47,840 ALI: Только один из них? 443 00:21:47,840 --> 00:21:49,970 ROB: Да. 444 00:21:49,970 --> 00:21:55,270 Поэтому, когда вы положите любой из этих символов, игнорируя много - 445 00:21:55,270 --> 00:21:56,450 ALI: [неразборчиво] 446 00:21:56,450 --> 00:21:57,620 ROB: Да, с помощью курсора. 447 00:21:57,620 --> 00:21:58,380 ALI: Да. 448 00:21:58,380 --> 00:21:59,690 Это было захватывающее. 449 00:21:59,690 --> 00:22:04,050 ROB: Таким образом, игнорирование этих те, слева, которые являются специальными символами - 450 00:22:04,050 --> 00:22:08,520 если вы положите любой из этих символов в одинарные кавычки, то это будет 451 00:22:08,520 --> 00:22:11,620 перевод этого значения слева. 452 00:22:11,620 --> 00:22:13,660 ALI: Это десятичное число для него. 453 00:22:13,660 --> 00:22:19,710 Это как матчи с 65, B 66, и вы заметите, что все они в 454 00:22:19,710 --> 00:22:21,540 алфавитном порядке, что делает разницу. 455 00:22:21,540 --> 00:22:27,110 Так что, как говорит Роб, и прежде, в этом коде, мы были вычисления расстояния от 456 00:22:27,110 --> 00:22:29,610 Первая буква, как таковой. 457 00:22:29,610 --> 00:22:32,820 И это будет то же самое, будь то верхний или нижний регистр. 458 00:22:32,820 --> 00:22:38,390 ROB: Итак, когда мы сделали D, 68 минус 65, получаем 3. 459 00:22:38,390 --> 00:22:42,370 Поскольку D составляет три позиции в алфавите. 460 00:22:42,370 --> 00:22:46,680 ALI: Итак, как бы вы перевести, что более, чтобы найти маленькую D? 461 00:22:46,680 --> 00:22:47,240 ROB: Да. 462 00:22:47,240 --> 00:22:52,230 Так что, если у меня есть 3 теперь, я знаю, я хочу пойти на три буквы - 463 00:22:52,230 --> 00:22:54,830 Мы, оказывается, собирается строчной сейчас, но, скажем, я хочу пойти три 464 00:22:54,830 --> 00:22:58,610 позиции в нижнем регистре сторона вещей. 465 00:22:58,610 --> 00:23:01,400 Так как я могу это сделать? 466 00:23:01,400 --> 00:23:04,240 Я знаю, нижний регистр составляет 97. 467 00:23:04,240 --> 00:23:07,535 Так как я могу найти три позиции в строчных букв? 468 00:23:10,461 --> 00:23:11,934 >> SPEAKER 15: У меня есть один вопрос, на самом деле. 469 00:23:11,934 --> 00:23:12,425 ALI: Да, идти вперед. 470 00:23:12,425 --> 00:23:14,880 SPEAKER 15: Так для этого, это действительно не имеет значения, если я знаю, что это положение, 471 00:23:14,880 --> 00:23:16,360 нравится, мне не нужна эта таблица. 472 00:23:16,360 --> 00:23:16,840 ROB: Нет. 473 00:23:16,840 --> 00:23:19,380 Вам никогда не придется использовать любое из этих чисел. 474 00:23:19,380 --> 00:23:23,670 И это важный момент в вашей программе, что вы никогда не должны жестко 475 00:23:23,670 --> 00:23:25,500 код любого из этих констант. 476 00:23:25,500 --> 00:23:31,190 Используйте 'A'. Никогда не используйте 65 или 97. 477 00:23:31,190 --> 00:23:34,370 ALI: Те, кто называют магией чисел, и они действительно запутанной. 478 00:23:34,370 --> 00:23:37,080 Мол, при отладке кода, вы не могли бы вспомнить, что 479 00:23:37,080 --> 00:23:38,020 Вы использовали их для. 480 00:23:38,020 --> 00:23:40,770 И для нас классификации кода, мы не знаем, что 481 00:23:40,770 --> 00:23:41,750 Вы используете их. 482 00:23:41,750 --> 00:23:44,815 Поэтому лучше, если вы собираетесь использовать символы, так что делает 483 00:23:44,815 --> 00:23:46,065 больше смысла для людей. 484 00:23:49,460 --> 00:23:51,160 Хорошо, любые другие вопросы? 485 00:23:51,160 --> 00:23:52,975 Больше людей сделали, или - 486 00:23:56,243 --> 00:23:57,493 Я думаю, мы можем проверить. 487 00:23:59,870 --> 00:24:02,410 Это действительно жутко, что вы можете увидеть код людей. 488 00:24:02,410 --> 00:24:04,970 ROB: Да. 489 00:24:04,970 --> 00:24:06,410 Мы не должны этого делать. 490 00:24:06,410 --> 00:24:08,380 Мы не знаем имен людей, либо. 491 00:24:08,380 --> 00:24:10,940 ALI: О, да, хорошо, что делает его лучше, так что мы будем еще более беспристрастный 492 00:24:10,940 --> 00:24:14,820 вместо того, чтобы просто случайно выбирая кого-то. 493 00:24:14,820 --> 00:24:15,360 Не волнуйтесь. 494 00:24:15,360 --> 00:24:16,265 Я не буду это делать. 495 00:24:16,265 --> 00:24:20,396 Если у вас есть случайные вещи, о - не беда. 496 00:24:20,396 --> 00:24:20,870 Хорошо. 497 00:24:20,870 --> 00:24:22,556 Как делают люди? 498 00:24:22,556 --> 00:24:26,950 >> SPEAKER 17: Так девятой строке должна вывести характер? 499 00:24:26,950 --> 00:24:27,430 ROB: Да. 500 00:24:27,430 --> 00:24:27,910 ALI: Да. 501 00:24:27,910 --> 00:24:30,770 Так что, если вы идете вниз - 502 00:24:30,770 --> 00:24:32,200 ROB: Ой, не могу этого сделать. 503 00:24:32,200 --> 00:24:35,400 ALI: Вы увидите, что он напечатал хэш-символа. 504 00:24:35,400 --> 00:24:37,180 SPEAKER 17: О, все в порядке. 505 00:24:37,180 --> 00:24:41,290 ROB: Я думаю иначе, Вы можете смотреть на вещи мы печати двух 506 00:24:41,290 --> 00:24:42,540 символы. 507 00:24:44,500 --> 00:24:47,740 Сначала один Мы печатаем это письмо А. 508 00:24:47,740 --> 00:24:51,610 Следующий Мы печатаем только 65. 509 00:24:51,610 --> 00:24:54,450 Это, наверное, кричать на меня за это. 510 00:24:54,450 --> 00:25:00,060 Поэтому, если мы просто запустить это, вы заметите, что она печатает оба раза. 511 00:25:00,060 --> 00:25:02,070 Потому что мы просим это то же самое. 512 00:25:02,070 --> 00:25:07,840 Мы просим его, чтобы напечатать букву А. И тогда мы просим его, чтобы печать 513 00:25:07,840 --> 00:25:13,820 № 65 интерпретируется как символ, который то же самое. 514 00:25:13,820 --> 00:25:15,100 ALI: У вас есть что сказать? 515 00:25:15,100 --> 00:25:18,150 О, я просто шучу, извините. 516 00:25:18,150 --> 00:25:20,640 Ладно, как люди - 517 00:25:20,640 --> 00:25:22,280 ROB: Мы можем просто пройти через это. 518 00:25:22,280 --> 00:25:25,250 >> ALI: Итак, с чего начать? 519 00:25:25,250 --> 00:25:26,500 Любой? 520 00:25:28,030 --> 00:25:34,486 Как намек, что мы должны получить что-то от людей, от typers. 521 00:25:34,486 --> 00:25:36,850 SPEAKER 18: [неразборчиво] 522 00:25:36,850 --> 00:25:38,290 ALI: Ах да, быстрый, отлично. 523 00:25:38,290 --> 00:25:40,660 Таким образом, мы наберем - 524 00:25:40,660 --> 00:25:41,670 Что мы печатаем? 525 00:25:41,670 --> 00:25:43,660 Любой? 526 00:25:43,660 --> 00:25:46,480 Или я должен просто ввести его? 527 00:25:46,480 --> 00:25:47,530 Неужели мы на самом деле ввод - 528 00:25:47,530 --> 00:25:48,430 ROB: Конечно. 529 00:25:48,430 --> 00:25:50,990 ALI: Таким образом, мы наберем Printf чтобы побудить его, так что мы можем быть 530 00:25:50,990 --> 00:25:54,810 нравится, дай мне знак. 531 00:25:54,810 --> 00:25:55,710 Хорошо, а что потом? 532 00:25:55,710 --> 00:25:56,664 Почему она это делает? 533 00:25:56,664 --> 00:25:57,620 Роб: Я не знаю. 534 00:25:57,620 --> 00:26:00,070 ALI: Хорошо. 535 00:26:00,070 --> 00:26:03,680 Так что теперь, мы говорим им, чтобы дать нам характер. 536 00:26:03,680 --> 00:26:07,064 Но тогда как же вы на самом деле получить этот символ? 537 00:26:07,064 --> 00:26:10,060 SPEAKER 19: Использование GetString. 538 00:26:10,060 --> 00:26:12,040 ALI: GetString? 539 00:26:12,040 --> 00:26:12,850 GetChar? 540 00:26:12,850 --> 00:26:17,038 Хорошо, так в чем же разница между строк и символов? 541 00:26:17,038 --> 00:26:20,020 SPEAKER 19: Строки серии, как массив символов. 542 00:26:20,020 --> 00:26:21,910 >> ALI: Cool, да. 543 00:26:21,910 --> 00:26:25,550 Так что в этой проблеме, нам нужно только рассмотреть один символ за раз, так что 544 00:26:25,550 --> 00:26:28,400 мы только собираемся делать GetChar для этого экземпляра. 545 00:26:28,400 --> 00:26:32,400 ROB: Мы могли бы реализовать функцию, если мы хотим, что взял всю строку 546 00:26:32,400 --> 00:26:35,750 и подошел строку и все изменилось нижнего регистра в верхний регистр и все 547 00:26:35,750 --> 00:26:37,380 верхнего регистра в нижний регистр. 548 00:26:37,380 --> 00:26:39,170 Но здесь, мы просто просим Вас за один символ. 549 00:26:39,170 --> 00:26:42,800 Али: Теперь у нас есть характер здесь, но тогда мы должны его сохранить. 550 00:26:42,800 --> 00:26:45,070 И тогда мы добавим символ с - что? 551 00:26:45,070 --> 00:26:46,070 SPEAKER 20: Определение переменных. 552 00:26:46,070 --> 00:26:48,100 ALI: Да, именно так. 553 00:26:48,100 --> 00:26:49,585 Так что у нас есть характер. 554 00:26:49,585 --> 00:26:51,766 Роб: Я думаю, что вы могли бы быть - 555 00:26:51,766 --> 00:26:55,630 Вы только три места в, поэтому он кричит на вас. 556 00:26:55,630 --> 00:27:01,300 >> ALI: Хорошо, прохладно, теперь, когда мы табуляции множество, что происходит дальше? 557 00:27:01,300 --> 00:27:02,550 Какой следующий шаг? 558 00:27:05,590 --> 00:27:08,870 ROB: Что наша программа должна сделать, это изменить строчной буквы, чтобы 559 00:27:08,870 --> 00:27:10,130 заглавной буквы. 560 00:27:10,130 --> 00:27:15,478 Что делать, если я случайно ввести хэш-символом? 561 00:27:15,478 --> 00:27:16,314 Разве что - 562 00:27:16,314 --> 00:27:16,732 Али: Это хороший символ. 563 00:27:16,732 --> 00:27:18,270 Мы используем это много. 564 00:27:18,270 --> 00:27:21,937 ROB: Это действительно вещь, я могу преобразовать в верхний регистр форме? 565 00:27:21,937 --> 00:27:23,070 SPEAKER 21: Нет. 566 00:27:23,070 --> 00:27:24,070 ALI: Нет 567 00:27:24,070 --> 00:27:24,900 Мы должны проверить это. 568 00:27:24,900 --> 00:27:34,950 Таким образом, мы можем иметь, если заявление проверку, так что если с больше 569 00:27:34,950 --> 00:27:37,410 или равна a'строчная '- 570 00:27:37,410 --> 00:27:45,490 Таким образом, если мы посмотрим на график, можно заметить, что оно должно быть между здесь, 571 00:27:45,490 --> 00:27:47,670 на 97 и строчные. 572 00:27:47,670 --> 00:27:52,110 И это может быть любой из них, и с шагом весь путь вниз. 573 00:27:52,110 --> 00:27:55,200 А тут еще г на 122. 574 00:27:55,200 --> 00:27:58,215 И она должна находиться между этими двумя значениями. 575 00:27:58,215 --> 00:27:59,700 Имеет ли это смысл? 576 00:27:59,700 --> 00:28:04,130 ROB: Так что, если с не между 97 и 122 - 577 00:28:04,130 --> 00:28:09,960 или вы никогда не должны использовать эти цифры - если с не между "а" и 578 00:28:09,960 --> 00:28:15,110 'Г', то это не является допустимым символом для нас в верхний регистр. 579 00:28:15,110 --> 00:28:18,590 ALI: Так в коде формы, мы говорим, что если с больше или равна одной 580 00:28:18,590 --> 00:28:19,640 случае строчной - 581 00:28:19,640 --> 00:28:21,270 ничего себе, как ты говоришь? 582 00:28:21,270 --> 00:28:26,900 Ладно, больше или равно 'а' в нижнем регистре, и она должна быть выше 583 00:28:26,900 --> 00:28:32,250 строчная "г". Таким образом, она должна быть меньше или равна нижнему регистру 'Z'. 584 00:28:32,250 --> 00:28:35,300 Мы делаем уверен, что это между ними. 585 00:28:35,300 --> 00:28:38,540 Тогда мы можем продолжать с нашей счастливой код. 586 00:28:41,992 --> 00:28:43,360 Что? 587 00:28:43,360 --> 00:28:46,860 ROB: Я полагал, что мы бы просто продолжать спрашивать, если мы, оказывается, не имеют 588 00:28:46,860 --> 00:28:48,250 строчной буквы. 589 00:28:48,250 --> 00:28:51,130 ALI: О, я не знал об этом. 590 00:28:51,130 --> 00:28:52,820 Извините. 591 00:28:52,820 --> 00:28:58,100 >> Итак, если мы собираемся делать, как говорит Роб, и убедиться, что - 592 00:28:58,100 --> 00:29:02,068 мы можем продолжать спрашивать их, то, что мы должны делать? 593 00:29:02,068 --> 00:29:02,994 SPEAKER 22: [неразборчиво] 594 00:29:02,994 --> 00:29:03,530 ROB: Да. 595 00:29:03,530 --> 00:29:05,630 Мы должны использовать своего рода цикл. 596 00:29:05,630 --> 00:29:12,900 Поскольку пользователь может ввести что-нибудь неправильное невыразимое количество раз. 597 00:29:12,900 --> 00:29:14,990 Таким образом, вы можете использовать цикл. 598 00:29:14,990 --> 00:29:18,870 Цель сделай то время как цикл - 599 00:29:18,870 --> 00:29:21,340 буквально, единственный раз за всю свою жизнь вы будете когда-либо использовать делать- 600 00:29:21,340 --> 00:29:24,780 в то время как петли, когда вы просите для пользовательского ввода. 601 00:29:24,780 --> 00:29:28,260 Поэтому тот факт, мы просим для пользовательского ввода здесь намек, что мы должны 602 00:29:28,260 --> 00:29:29,660 использовать DO-цикла. 603 00:29:29,660 --> 00:29:30,780 И почему это? 604 00:29:30,780 --> 00:29:34,270 Потому что делать-пока петля всегда происходит по крайней мере, один раз. 605 00:29:34,270 --> 00:29:40,260 Поэтому, когда вы спрашиваете, для ввода данных пользователем, вы хотите, чтобы это произошло по крайней мере, один раз. 606 00:29:40,260 --> 00:29:42,750 И потом, если все было успешно, можно продолжать. 607 00:29:42,750 --> 00:29:45,130 Если нет, вернуться и спросить еще раз. 608 00:29:45,130 --> 00:29:48,950 >> ALI: Итак, другими словами, мы должны сделать раздел. 609 00:29:48,950 --> 00:29:51,130 И так это говорю это, чтобы что-то сделать. 610 00:29:51,130 --> 00:29:53,890 Так Printf - 611 00:29:53,890 --> 00:29:57,490 распечатать заявления, приглашения, а также получить символ, или попытка 612 00:29:57,490 --> 00:29:58,780 получить характер. 613 00:29:58,780 --> 00:30:03,410 И тогда мы должны проверить, если он действительно сделал это правильно. 614 00:30:03,410 --> 00:30:07,730 Таким образом, мы добавим условия, то мы говорим, а потом у нас есть 615 00:30:07,730 --> 00:30:08,980 условный оператор. 616 00:30:11,600 --> 00:30:14,730 ROB: Но теперь мы изменили ход мысли. 617 00:30:14,730 --> 00:30:18,940 Теперь мы изначально говорили, если с этого диапазона, это справедливо. 618 00:30:18,940 --> 00:30:23,340 Теперь мы хотим обратить вспять этот процесс и говорить, если с не находится в этом диапазоне, то мы 619 00:30:23,340 --> 00:30:25,020 необходимо создать резервную делать вещи снова. 620 00:30:25,020 --> 00:30:25,900 ALI: О, да. 621 00:30:25,900 --> 00:30:31,720 ROB: Так что пока это не так, мы хотим вернуться назад и 622 00:30:31,720 --> 00:30:34,470 попросить другого характера. 623 00:30:34,470 --> 00:30:36,880 Все ли видели? 624 00:30:36,880 --> 00:30:38,830 Вопросов по этому поводу? 625 00:30:38,830 --> 00:30:39,400 Хорошо. 626 00:30:39,400 --> 00:30:43,480 >> Так что теперь у нас есть действующий характер, что мы можем верхний регистр. 627 00:30:43,480 --> 00:30:47,150 ALI: Итак, что следующим шагом для него верхний регистр? 628 00:30:49,994 --> 00:30:51,890 SPEAKER 23: добавить 32. 629 00:30:51,890 --> 00:30:52,600 ALI: Вы добавляете - 630 00:30:52,600 --> 00:30:54,150 Простите, что? 631 00:30:54,150 --> 00:30:56,580 SPEAKER 23: Вы не можете просто добавить 32? 632 00:30:56,580 --> 00:31:02,360 ROB: Так что да, не с точки зрения магии чисел. 633 00:31:02,360 --> 00:31:04,610 Вы должны использовать только одинарные кавычки вещи. 634 00:31:04,610 --> 00:31:06,450 SPEAKER 23: Ладно, хорошо - 635 00:31:06,450 --> 00:31:07,250 Роб: Но вы можете получить 32 - 636 00:31:07,250 --> 00:31:11,870 ALI: Как Вы получите номер 32, я думаю, это то, что мы говорим. 637 00:31:11,870 --> 00:31:18,060 SPEAKER 23: [неразборчиво] 638 00:31:18,060 --> 00:31:22,158 ROB: Итак, мы можем придумать номер 32 вместе - 639 00:31:22,158 --> 00:31:24,468 SPEAKER 23: [неразборчиво]? 640 00:31:24,468 --> 00:31:24,930 ROB: Да. 641 00:31:24,930 --> 00:31:28,540 Но если мы собираемся делать это в два этапа мы делали раньше с 642 00:31:28,540 --> 00:31:29,950 положение вещей. 643 00:31:29,950 --> 00:31:36,910 Таким образом, положение в алфавите, что с случается, есть с минусом строчные 644 00:31:36,910 --> 00:31:42,360 'А'. Так что, если мы вошли в нижний регистр 'D', позиция будет 3. 645 00:31:42,360 --> 00:31:46,490 А теперь мы хотим, чтобы взять вещи с прописной круг вещей. 646 00:31:46,490 --> 00:31:55,376 Так что теперь наш новый C будет 'A' капитала плюс положении. 647 00:31:55,376 --> 00:32:00,090 Так что люди видят, как это подводит нас - 648 00:32:00,090 --> 00:32:04,140 Мы движемся от строчной диапазон, точную глубину, мы были в это 649 00:32:04,140 --> 00:32:07,650 диапазона, и спускаясь в верхнем регистре диапазона, и собирается, что далеко 650 00:32:07,650 --> 00:32:10,610 в нее снова, которая будет такой же характер, но теперь 651 00:32:10,610 --> 00:32:12,550 верхний регистр. 652 00:32:12,550 --> 00:32:16,490 ALI: А для людей, которые были сбиты с толку тем, как он только что сказал, 32, 653 00:32:16,490 --> 00:32:20,390 в основном он совмещал обе эти в одном заявлении. 654 00:32:20,390 --> 00:32:24,550 Таким образом, эквивалентный способ записи этого сказать, что вы можете просто вид 655 00:32:24,550 --> 00:32:28,190 заменить позицию, с минусом ", и положил его прямо здесь. 656 00:32:28,190 --> 00:32:31,330 Таким образом, то, что он сделал, я не - 657 00:32:31,330 --> 00:32:44,510 символ newc = прописные 'A' плюс с минусом нижний регистр 'A'. И потому, что алгебры, 658 00:32:44,510 --> 00:32:47,090 Вы можете перемещать их. 659 00:32:47,090 --> 00:32:52,960 Можно также сказать, что вы можете переместить его вокруг так символ newc = прописные 'A' 660 00:32:52,960 --> 00:32:55,620 минус нижний регистр 'A' плюс с. 661 00:32:55,620 --> 00:32:58,650 И это, вы заметите, если мы вернемся к графику. 662 00:33:01,160 --> 00:33:06,300 У нас есть верхний регистр составляет 65 и нижний регистр составляет 97. 663 00:33:06,300 --> 00:33:09,800 Таким образом, 65 - 97, -32. 664 00:33:09,800 --> 00:33:10,020 >> Привет. 665 00:33:10,020 --> 00:33:10,930 Садитесь. 666 00:33:10,930 --> 00:33:12,180 Ох. 667 00:33:16,240 --> 00:33:17,980 Вы можете сидеть прямо здесь. 668 00:33:17,980 --> 00:33:20,805 Круто, хорошо, удивительный. 669 00:33:20,805 --> 00:33:22,390 Добро пожаловать в раздел. 670 00:33:22,390 --> 00:33:25,110 Вы заметите, что разница составляет 32. 671 00:33:25,110 --> 00:33:28,150 Так вот откуда у него этот номер. 672 00:33:28,150 --> 00:33:32,140 Но это не так, как Роб говорит, лучший способ сделать это, потому что она имеет странное 673 00:33:32,140 --> 00:33:35,260 Магия путаницы номер. 674 00:33:35,260 --> 00:33:38,710 ROB: Вы должны использовать капитал минус нижний регистр. 675 00:33:38,710 --> 00:33:43,045 Вы не должны использовать только прямые 32. 676 00:33:43,045 --> 00:33:45,020 SPEAKER 24: Почему, что, опять? 677 00:33:45,020 --> 00:33:49,860 Почему бы вам не использовать 32? 678 00:33:49,860 --> 00:33:55,630 ALI: Если мы это сделали, это было бы символ newc = -32 + с. 679 00:33:55,630 --> 00:34:00,030 И если вы не видите в остальном, если это все ушло, и вы 680 00:34:00,030 --> 00:34:04,720 просто увидеть эту одну линию, то, как вы знаете, что 32 является отрицательным? 681 00:34:04,720 --> 00:34:07,000 Это просто неуместно. 682 00:34:07,000 --> 00:34:10,360 ROB: Так что ваша программа будет работать совершенно нормально. 683 00:34:10,360 --> 00:34:12,960 Это просто стиль вещь. 684 00:34:12,960 --> 00:34:17,760 Кто-то собирается в и чтение вашего кода, они как то, что делает 32 имеешь в виду? 685 00:34:17,760 --> 00:34:18,889 Может быть, они не - 686 00:34:18,889 --> 00:34:22,090 Я, вероятно, не сразу понимаешь, что 32 бывает 687 00:34:22,090 --> 00:34:25,100 Разница между строчной буквы и прописные буквы, хотя 688 00:34:25,100 --> 00:34:26,510 Мы собираемся использовать этот факт в следующей проблеме. 689 00:34:30,210 --> 00:34:31,610 32, - 690 00:34:31,610 --> 00:34:38,579 Вы можете оставить комментарий выше говорили 32 является разница между 691 00:34:38,579 --> 00:34:45,290 'A' и '.' Но в тот момент, почему бы не использовать 'A' и 'а', и вы 692 00:34:45,290 --> 00:34:47,469 не нуждаются в комментарии пор. 693 00:34:47,469 --> 00:34:52,739 >> ALI: Это просто способы над ним много чище, стиль стрелки. 694 00:34:52,739 --> 00:34:54,590 И так, поскольку вы только начинаете программирование - 695 00:34:54,590 --> 00:34:57,775 или я думаю, нет, так как вы хакер EDI - не беда. 696 00:34:57,775 --> 00:34:59,420 Это просто хороший способ есть - 697 00:34:59,420 --> 00:35:01,230 лучше иметь лучшую стиле. 698 00:35:01,230 --> 00:35:02,850 Это проще для других людей, чтобы читать. 699 00:35:02,850 --> 00:35:06,560 ROB: Вы никогда не должны помнить таблицу ASCII, никогда. 700 00:35:06,560 --> 00:35:09,505 Вы просто должны быть в состоянии использовать одну кавычку. 701 00:35:12,390 --> 00:35:12,730 Вопросы? 702 00:35:12,730 --> 00:35:13,980 ALI: Все хорошо? 703 00:35:16,020 --> 00:35:16,430 ROB: Хорошо. 704 00:35:16,430 --> 00:35:23,320 Так что в следующий проблема является существенной. 705 00:35:23,320 --> 00:35:24,660 Таким образом, следующая задача требует от нас - 706 00:35:27,880 --> 00:35:31,570 ALI: Следующая проблема не просит нас сделать то же самое, но использовать 707 00:35:31,570 --> 00:35:32,640 битовые операторы. 708 00:35:32,640 --> 00:35:35,170 ROB: И, конечно, мы не видели битовые операторы пока нет. 709 00:35:35,170 --> 00:35:38,874 Поэтому мы сейчас обсудим те. 710 00:35:38,874 --> 00:35:39,540 ALI: быть возбуждены. 711 00:35:39,540 --> 00:35:41,490 Они супер весело. 712 00:35:41,490 --> 00:35:47,927 >> ROB: Так регулярных операторов, таких как х плюс у, минус, умножение, деление. 713 00:35:47,927 --> 00:35:50,850 ALI: Введите его в этой строке. 714 00:35:50,850 --> 00:35:55,420 Роб: Там также%, если вы еще не видели его, которое можно использовать в 715 00:35:55,420 --> 00:35:57,130 Символ процента. 716 00:35:57,130 --> 00:35:59,090 Но мы не будем использовать их для этой проблемы. 717 00:35:59,090 --> 00:36:01,400 Мы хотим использовать битовые операторы. 718 00:36:01,400 --> 00:36:06,250 Теперь помните, мы привезли его в лекции один. 719 00:36:06,250 --> 00:36:10,760 Я не уверен, если мы обсуждали двоичной дальше. 720 00:36:10,760 --> 00:36:13,710 Но помните, что каждое число представляется - 721 00:36:13,710 --> 00:36:14,540 Ну, все - 722 00:36:14,540 --> 00:36:17,860 представлена ​​в 1 и 0 в двоичном виде. 723 00:36:17,860 --> 00:36:27,320 Таким образом, это означает, что когда я говорю, № 8, я знаю, что это 724 00:36:27,320 --> 00:36:30,240 как, 1000. 725 00:36:30,240 --> 00:36:35,530 Что битовые операторы сообщите нам сделать, это работать на этих битов - 726 00:36:35,530 --> 00:36:37,000 будет работать на этих битов напрямую. 727 00:36:40,160 --> 00:36:42,490 Теперь я уже не дело в отношении восьми. 728 00:36:42,490 --> 00:36:45,930 Я имею дело с точки зрения 1000, и я хочу сделать что-то с теми, 729 00:36:45,930 --> 00:36:47,670 отдельных битов. 730 00:36:47,670 --> 00:36:52,520 Так Али написал битовые операторы здесь, но that's - 731 00:36:55,060 --> 00:36:58,020 Номер 8, мы будем использовать как один из наших номеров пример. 732 00:36:58,020 --> 00:37:02,980 А двоичным представлением 1000. 733 00:37:02,980 --> 00:37:06,520 Мы будем использовать другой номер, 5 - 734 00:37:06,520 --> 00:37:12,070 на самом деле мы будем использовать 9 и 5. 735 00:37:12,070 --> 00:37:15,778 И 5 в двоичном представлении 00 - 736 00:37:15,778 --> 00:37:18,380 0101. 737 00:37:18,380 --> 00:37:19,480 Али: Все ли хорошо на этом? 738 00:37:19,480 --> 00:37:21,040 Двоичный вещи? 739 00:37:21,040 --> 00:37:23,740 Именно от первой лекции? 740 00:37:23,740 --> 00:37:29,070 >> ROB: Так что даже если вы не совсем на вершине, как преобразовать вещи 741 00:37:29,070 --> 00:37:31,700 двоичный, это не совсем важно для этой проблемы. 742 00:37:31,700 --> 00:37:36,560 Мы будем использовать это, но вы будете иметь гораздо больше шансов выяснить, как 743 00:37:36,560 --> 00:37:39,250 быстро изменить ситуацию в двоичный. 744 00:37:39,250 --> 00:37:43,820 Таким образом, используя 9 и 5, теперь у нас есть битовые операторы. 745 00:37:43,820 --> 00:37:48,620 Да, и еще, 9 и 5, если это целое число, то на самом деле это 32 бит, 746 00:37:48,620 --> 00:37:53,150 которая означает, что мы как 0, 0, 0, 0 много раз, то 747 00:37:53,150 --> 00:37:55,330 101 на самого конца. 748 00:37:55,330 --> 00:37:58,530 Это просто, потому что, независимо от того, что вы делаете, в целых числах, 32 бит. 749 00:37:58,530 --> 00:38:01,570 Просто потому, что нам нужно только четыре бита представляют 9 не значит, что мы не 750 00:38:01,570 --> 00:38:05,500 с использованием до другого 27 бит только для 0s. 751 00:38:05,500 --> 00:38:10,110 ALI: Просто чтобы прояснить, одно из этих чисел это 0 или 1, немного. 752 00:38:10,110 --> 00:38:11,830 Это одна 4 бита. 753 00:38:11,830 --> 00:38:14,320 Как же так Роб сказал, что машины хранить их в 32. 754 00:38:14,320 --> 00:38:19,430 Таким образом, то они будут иметь 32 либо 0, либо 1. 755 00:38:19,430 --> 00:38:22,190 Круто? 756 00:38:22,190 --> 00:38:23,610 ROB: битовые операторы. 757 00:38:23,610 --> 00:38:27,310 Первое, что мы будем иметь дело с, давайте сделаем &. 758 00:38:27,310 --> 00:38:31,260 Так что если мы делаем 9 и 5. 759 00:38:31,260 --> 00:38:38,310 Так что и делает это, по крупицам, он сравнивает биты из двух чисел 760 00:38:38,310 --> 00:38:44,860 и если оба числа равны 1, то она вернет 1. 761 00:38:44,860 --> 00:38:50,870 Если это 0, а другой равен 1, или оба 0s, то она возвращает 0. 762 00:38:50,870 --> 00:38:53,060 Таким образом, вы можете думать об этом как логические НСРА. 763 00:38:53,060 --> 00:38:59,270 Как нужно Верный и Истинный, чтобы вернуться верно, но истинным и ложным является ложным. 764 00:38:59,270 --> 00:39:02,390 Так что это то же самое, но теперь мы имеем дело с ней только с битами. 765 00:39:02,390 --> 00:39:04,910 >> ALI: Так что, если вы посмотрите на это, вы будете иметь 1 - 766 00:39:04,910 --> 00:39:08,490 Вы выстроить их, так что это будет 1 и 0. 767 00:39:08,490 --> 00:39:11,036 Вы, ребята, думаете, что было бы - что бы это оценить, чтобы? 768 00:39:11,036 --> 00:39:11,770 SPEAKER 25: 1. 769 00:39:11,770 --> 00:39:12,270 ALI: Круто. 770 00:39:12,270 --> 00:39:16,850 Или нет. 771 00:39:16,850 --> 00:39:18,830 Извините. 772 00:39:18,830 --> 00:39:21,290 Так что это имеет смысл? 773 00:39:21,290 --> 00:39:23,200 Так что это коллективный ответ снова? 774 00:39:23,200 --> 00:39:24,750 Извините. 775 00:39:24,750 --> 00:39:27,530 Так что, если у нас 1 и 0, то, что вы получаете? 776 00:39:27,530 --> 00:39:30,260 ROB: Так вы думаете, как вы говорите, и вслух. 777 00:39:30,260 --> 00:39:37,550 Если у вас есть два бита х и у, необходимо х и у равным 1, для того, 778 00:39:37,550 --> 00:39:40,770 оценить, верно - или для того, чтобы его оценить, 1. 779 00:39:40,770 --> 00:39:45,650 Если х и у равны 0, то оно оценивается как ложное или 0. 780 00:39:45,650 --> 00:39:49,165 Лукас: Это хорошо, чтобы помнить также, что 1 является истинным и 0 неверно. 781 00:39:49,165 --> 00:39:51,684 Так что если у вас есть истинное и ложное, это ложь. 782 00:39:51,684 --> 00:39:53,570 Но потом, правда и правда, правда. 783 00:39:53,570 --> 00:39:55,040 Ложные и ложно, ложно. 784 00:39:55,040 --> 00:39:57,650 ALI: у нас есть истинное и ложное. 785 00:39:57,650 --> 00:39:58,530 Таким образом, 1 и 0. 786 00:39:58,530 --> 00:40:00,380 Таким образом, опять же, извините, еще раз? 787 00:40:00,380 --> 00:40:02,210 SPEAKER 25: Было бы 0. 788 00:40:02,210 --> 00:40:03,560 Да, круто. 789 00:40:03,560 --> 00:40:05,400 И тогда мы имеем 0 и 1 - 790 00:40:05,400 --> 00:40:06,260 SPEAKER 25: [неразборчиво] 791 00:40:06,260 --> 00:40:06,680 ALI: Да. 792 00:40:06,680 --> 00:40:09,790 Таким образом, вы всегда можете обменять их на - 793 00:40:09,790 --> 00:40:12,150 Тогда, если у вас есть 0 и 0? 794 00:40:12,150 --> 00:40:12,618 SPEAKER 4: 1? 795 00:40:12,618 --> 00:40:14,490 0? 796 00:40:14,490 --> 00:40:16,230 ROB: Так это 0. 797 00:40:16,230 --> 00:40:18,870 Это не то, что оба номера должны быть одинаковыми. 798 00:40:18,870 --> 00:40:22,030 Это что оба номера должны быть 1. 799 00:40:22,030 --> 00:40:26,150 ALI: Так как есть, чтобы быть правдой для того, чтобы быть правдой. 800 00:40:26,150 --> 00:40:26,950 Так что это 0. 801 00:40:26,950 --> 00:40:30,540 И тогда у вас есть 1% 1, который является? 802 00:40:30,540 --> 00:40:32,640 ROB: Это довольно хорошие цифры. 803 00:40:32,640 --> 00:40:34,362 У них есть все возможности - 804 00:40:34,362 --> 00:40:36,210 ALI: Хорошая работа, ничего себе. 805 00:40:36,210 --> 00:40:37,080 Хорошо, прохладно. 806 00:40:37,080 --> 00:40:39,220 Так ли это смысл для всех? 807 00:40:39,220 --> 00:40:41,770 >> ROB: Итак, теперь мы будем делать |. 808 00:40:41,770 --> 00:40:51,650 И это будет очень похоже, но теперь вместо х и у нуждающихся в 809 00:40:51,650 --> 00:40:54,880 быть 1 для того, чтобы оценить к одному, то это просто х или 810 00:40:54,880 --> 00:40:56,360 У должна быть 1. 811 00:40:56,360 --> 00:40:59,580 ALI: Так 1 | 0 вычисляется - 812 00:40:59,580 --> 00:41:00,270 КЛАСС: 1. 813 00:41:00,270 --> 00:41:01,690 ALI: Круто. 814 00:41:01,690 --> 00:41:03,710 0 | 1 вычисляет - 815 00:41:03,710 --> 00:41:04,420 КЛАСС: 1. 816 00:41:04,420 --> 00:41:06,726 ALI: Cool, а затем 0 | 0 - 817 00:41:06,726 --> 00:41:07,600 КЛАСС: 0. 818 00:41:07,600 --> 00:41:09,320 Али: Да, а потом 1 | 1 - 819 00:41:09,320 --> 00:41:10,180 КЛАСС: 1. 820 00:41:10,180 --> 00:41:12,090 ALI: Круто. 821 00:41:12,090 --> 00:41:14,060 Так вот, как две битовые операторы. 822 00:41:14,060 --> 00:41:15,430 Awesome. 823 00:41:15,430 --> 00:41:16,440 ROB: Итак, теперь мы будем делать ^. 824 00:41:16,440 --> 00:41:18,470 ALI: мы должны сделать все от них? 825 00:41:18,470 --> 00:41:20,620 ROB: Да, потому что я думаю, что мы собираемся его использовать - 826 00:41:20,620 --> 00:41:22,340 использование их всех. 827 00:41:22,340 --> 00:41:23,150 ALI: Хорошо. 828 00:41:23,150 --> 00:41:23,570 Так что - 829 00:41:23,570 --> 00:41:25,540 Роб: Я думаю, мы не должны. 830 00:41:25,540 --> 00:41:31,830 ALI: Так ^ работ в том, что вы должны иметь ровно один истинный и одна ложь. 831 00:41:31,830 --> 00:41:34,330 ^ Означает исключающего ИЛИ. 832 00:41:34,330 --> 00:41:36,650 Так что теперь это не так - 833 00:41:36,650 --> 00:41:41,220 Если X и Y равны 1, то теперь ложным. 834 00:41:41,220 --> 00:41:46,920 То есть разница между ^ и |, является то, что OR, вы можете иметь, если х 835 00:41:46,920 --> 00:41:49,440 правда или у верна, то мы хороши. 836 00:41:49,440 --> 00:41:55,176 Нет, говорит, что если ^ х, правда, у должно быть ложным, или же это не так. 837 00:41:55,176 --> 00:41:56,814 У вас есть вопрос? 838 00:41:56,814 --> 00:42:00,526 >> SPEAKER 26: [неразборчиво] 839 00:42:00,526 --> 00:42:00,990 ALI: Да. 840 00:42:00,990 --> 00:42:01,830 Это отчасти похоже. 841 00:42:01,830 --> 00:42:07,320 ROB: Да, поэтому, когда вы доберетесь до этой низкоуровневого вещи, эти 842 00:42:07,320 --> 00:42:10,870 виды операций вы имеете дело с. 843 00:42:10,870 --> 00:42:13,200 На аппаратном уровне, вы будете иметь дело только с битами. 844 00:42:13,200 --> 00:42:14,950 Вы не иметь дело с числами. 845 00:42:18,030 --> 00:42:23,502 ALI: Хорошо, для ^, или, если у вас есть 1 = 0, то, что должно оценить, что для? 846 00:42:23,502 --> 00:42:24,840 КЛАСС: 1. 847 00:42:24,840 --> 00:42:25,480 ALI: Круто. 848 00:42:25,480 --> 00:42:26,010 Если у вас есть 849 00:42:26,010 --> 00:42:28,370 0 ^ 1? КЛАСС: 1. 850 00:42:28,370 --> 00:42:29,490 ALI: Круто. 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 И тогда 1 ^ 1? 854 00:42:33,460 --> 00:42:35,050 КЛАСС: 0. 855 00:42:35,050 --> 00:42:37,710 ALI: Cool, удивительный. 856 00:42:37,710 --> 00:42:38,620 Следующий - 857 00:42:38,620 --> 00:42:40,520 Роб: Я думаю, что это все, что мы имеем дело с. 858 00:42:40,520 --> 00:42:41,490 Мы будем делать только это. 859 00:42:41,490 --> 00:42:43,242 ALI: единственный раз, когда мы должны делать - 860 00:42:43,242 --> 00:42:44,912 ROB: О, это будет в последний проблемы. 861 00:42:44,912 --> 00:42:47,070 SPEAKER 27: Подождите, еще раз? 862 00:42:47,070 --> 00:42:47,940 ALI: Извините, каков был ваш вопрос? 863 00:42:47,940 --> 00:42:49,564 >> SPEAKER 27: Можете ли вы объяснить, что опять? 864 00:42:49,564 --> 00:42:50,100 ^? 865 00:42:50,100 --> 00:42:51,490 SPEAKER 27: Exclus - да. 866 00:42:51,490 --> 00:42:55,800 ALI: Так что исключающего ИЛИ означает, что там должен быть исключительно 867 00:42:55,800 --> 00:43:02,970 одно истинное и одно ложное, так что 1 и один 0, по сравнению с OR, вы можете иметь - 868 00:43:02,970 --> 00:43:06,170 одна из них, чтобы быть правдой, или оба из них может быть правдой, потому что 869 00:43:06,170 --> 00:43:07,130 Для оценки к истине. 870 00:43:07,130 --> 00:43:10,030 SPEAKER 27: Таким образом, 0 и 0 было бы ложным. 871 00:43:10,030 --> 00:43:10,450 ALI: Да. 872 00:43:10,450 --> 00:43:11,780 Но если у вас 1 | 873 00:43:11,780 --> 00:43:14,290 1, будет равно правда. 874 00:43:14,290 --> 00:43:18,210 Но если у вас есть 1 ^ 1, как мы сделали, что ЛОЖЬ. 875 00:43:18,210 --> 00:43:21,220 Потому что это не только одна правда. 876 00:43:21,220 --> 00:43:26,930 ROB: И это может или не может быть полезным, но обратите внимание, что это ^ 877 00:43:26,930 --> 00:43:28,890 равно просто принимать | 878 00:43:28,890 --> 00:43:30,290 И минус. 879 00:43:30,290 --> 00:43:32,250 И вы можете думать об этом таким образом. 880 00:43:32,250 --> 00:43:37,290 ^ Только ORing все вместе, но, принимая любой из битов, где 881 00:43:37,290 --> 00:43:38,610 как было верно. 882 00:43:38,610 --> 00:43:41,620 Так и возвращает все, где оба были правдой. 883 00:43:41,620 --> 00:43:45,850 | Возвращает все, где один или оба были правдой. 884 00:43:45,850 --> 00:43:51,050 Так вычитания из | дает вам ^. 885 00:43:51,050 --> 00:43:52,040 ALI: Есть вопросы? 886 00:43:52,040 --> 00:43:53,290 Это было много информации. 887 00:43:55,980 --> 00:43:57,510 Все хорошо? 888 00:43:57,510 --> 00:44:00,360 >> ROB: Мы можем пойти по следующему те, для следующей задачи, сократить 889 00:44:00,360 --> 00:44:01,680 в какое время это? 890 00:44:01,680 --> 00:44:04,010 Они не нуждаются в этом до следующей проблемой. 891 00:44:04,010 --> 00:44:07,830 Али: Я думал, что это. 892 00:44:07,830 --> 00:44:08,830 ROB: Это не так. 893 00:44:08,830 --> 00:44:10,085 Али: Вы уверены? 894 00:44:10,085 --> 00:44:11,300 ROB: Да, я уверен. 895 00:44:11,300 --> 00:44:12,970 Али: Почему бы нам не начать делать следующий проблема? 896 00:44:15,710 --> 00:44:19,790 Проблема, опять же, изменить его из нижнего регистра в верхний регистр, и это 897 00:44:19,790 --> 00:44:21,720 время, чтобы использовать битовые операторы. 898 00:44:21,720 --> 00:44:22,970 ROB: Итак, мы - 899 00:44:25,290 --> 00:44:29,670 Давайте начнем с двоичным представлением 'A', капитал 'A', 900 00:44:29,670 --> 00:44:31,750 которых составляет 65 лет. 901 00:44:31,750 --> 00:44:36,150 Таким образом, в двоичном - 902 00:44:39,960 --> 00:44:47,900 так 'A' = 65, который =, в двоичном - 903 00:44:47,900 --> 00:44:51,380 Я собираюсь испортить число 0s - то. 904 00:44:51,380 --> 00:44:53,670 ALI: Значит ли это смысл для всех? 905 00:44:53,670 --> 00:44:57,620 Так, 1, нет 2s, не 4s, не 8s, нет - 906 00:45:00,238 --> 00:45:07,075 не 16, не 32s, а затем один 64. 907 00:45:07,075 --> 00:45:08,685 ROB: Да, я думаю, что это слишком много 0s. 908 00:45:08,685 --> 00:45:09,600 ALI: Извините. 909 00:45:09,600 --> 00:45:13,410 >> ROB: Итак, у нас есть 64-множество, и у нас есть 1 комплект, и объединение этих 910 00:45:13,410 --> 00:45:16,030 вместе, получаем 65. 911 00:45:16,030 --> 00:45:17,470 ALI: Cool фасоль? 912 00:45:17,470 --> 00:45:19,640 ROB: Так что теперь, нижний регистр 'A' - 913 00:45:22,220 --> 00:45:24,260 заметил 97 - 914 00:45:24,260 --> 00:45:26,370 В чем разница между 97 и 65? 915 00:45:26,370 --> 00:45:27,530 SPEAKER 28: 32. 916 00:45:27,530 --> 00:45:28,130 ROB: Да. 917 00:45:28,130 --> 00:45:35,920 Так что это 32, которая является его собственным немного, так что это будет 110001. 918 00:45:35,920 --> 00:45:41,200 И это будет справедливо для всех возможных символов. 919 00:45:41,200 --> 00:45:49,800 Таким образом, если мы думаем о 'D', который будет 68, что это будет 1000011. 920 00:45:49,800 --> 00:45:56,310 А потом строчные 'D' будет 68 плюс 32, что составляет 100, которое является 921 00:45:56,310 --> 00:46:00,010 будет то же самое, что это было, просто щелкая 922 00:46:00,010 --> 00:46:04,300 32 раз, поэтому 1100011. 923 00:46:04,300 --> 00:46:08,610 Таким образом, разница между прописными и строчными буквами просто листать 924 00:46:08,610 --> 00:46:10,170 что 32-битные положение. 925 00:46:10,170 --> 00:46:17,670 SPEAKER 29: Разве это не 1000100? 926 00:46:17,670 --> 00:46:19,670 ROB: Подождите, это 100 - 927 00:46:19,670 --> 00:46:20,480 то, что я сделал не так. 928 00:46:20,480 --> 00:46:21,730 Это было не так. 929 00:46:28,710 --> 00:46:31,150 Я думал, что это была разница в 3, так что потом я просто застрял 930 00:46:31,150 --> 00:46:33,970 двоичный 3 в конце. 931 00:46:33,970 --> 00:46:36,710 Это должно быть в порядке. 932 00:46:36,710 --> 00:46:37,150 ALI: Спасибо. 933 00:46:37,150 --> 00:46:38,080 Описание указание на это. 934 00:46:38,080 --> 00:46:40,320 Это был острый. 935 00:46:40,320 --> 00:46:43,450 Все права, ясно людям? 936 00:46:43,450 --> 00:46:45,700 >> ROB: разница между прописными и строчными версия 937 00:46:45,700 --> 00:46:49,250 всегда просто будет 32, и поэтому он всегда будет один бит 938 00:46:49,250 --> 00:46:51,840 , которая должна быть перевернута для переключения между ними. 939 00:46:51,840 --> 00:46:54,330 ALI: Так что в этом случае, зная разницы между столицей и 940 00:46:54,330 --> 00:46:57,130 строчная это хорошо. 941 00:46:57,130 --> 00:47:01,950 Не в коде, но концептуально по крайней мере, это хорошо. 942 00:47:01,950 --> 00:47:05,880 Таким образом, вы, ребята, можете идти вперед и кода, который в пространствах сейчас. 943 00:47:05,880 --> 00:47:08,580 Или мы должны просто обсудить это? 944 00:47:08,580 --> 00:47:09,760 ROB: Мы можем просто обсудить это. 945 00:47:09,760 --> 00:47:10,680 Я не знаю. 946 00:47:10,680 --> 00:47:11,680 Вы, ребята, можете попробовать. 947 00:47:11,680 --> 00:47:13,560 Обсуждение среди себе на некоторое время. 948 00:47:13,560 --> 00:47:16,390 Мы дадим вам возможность кодирования. 949 00:47:16,390 --> 00:47:17,640 [Промежуточные VOICES] 950 00:47:19,785 --> 00:47:22,695 ALI: - прохладно 951 00:47:22,695 --> 00:47:26,590 SPEAKER 30: Это как хакер комедии. 952 00:47:26,590 --> 00:47:31,060 Али: Да, мы просто говорю новости, пройдя через это. 953 00:47:31,060 --> 00:47:32,310 >> Роб: И мы вернулись. 954 00:47:34,950 --> 00:47:35,405 ALI: Это странно. 955 00:47:35,405 --> 00:47:38,720 Я чувствую, что мы должны иметь CS50 станции новость, и мы могли 956 00:47:38,720 --> 00:47:41,500 на самом деле сидят, как это. 957 00:47:41,500 --> 00:47:43,500 ROB: Hacker News. 958 00:47:43,500 --> 00:47:46,848 ALI: Hacker News 50. 959 00:47:46,848 --> 00:47:49,210 ALI: Не стесняйтесь задавать любые вопросы, если вы смущены. 960 00:47:52,280 --> 00:47:53,980 ROB: Кто-нибудь застряли? 961 00:47:53,980 --> 00:47:57,160 Али: Да, это хорошая вещь. 962 00:47:57,160 --> 00:47:58,590 ALI: Подождите, вы застряли в вашем кресле? 963 00:47:58,590 --> 00:48:01,010 Ох. 964 00:48:01,010 --> 00:48:02,260 Я был немного заинтересован. 965 00:48:06,670 --> 00:48:12,150 ROB: Потому что я просто понял, что мы собираемся хотите 966 00:48:12,150 --> 00:48:13,300 другой оператор побитового. 967 00:48:13,300 --> 00:48:16,985 А сейчас давайте просто конвертировать прописных и строчных букв. 968 00:48:23,280 --> 00:48:25,220 ALI: К сожалению, не все получают, что объявление? 969 00:48:25,220 --> 00:48:27,755 Мы собираемся, чтобы перейти от прописных и строчных букв. 970 00:48:27,755 --> 00:48:30,990 ROB: Тогда мы будем обсуждать нижнего регистра в верхний сразу после этого. 971 00:48:33,820 --> 00:48:36,650 О, нет. 972 00:48:36,650 --> 00:48:39,560 У нас есть ошибка в этом, который, я думаю, мы никогда не пытался бежать. 973 00:48:39,560 --> 00:48:44,140 Какие это всего лишь символ с должна быть объявлена ​​вне цикла, потому что 974 00:48:44,140 --> 00:48:45,805 сфера его применения ограничена в петлю. 975 00:48:49,200 --> 00:48:53,060 SPEAKER 32: В данном случае, это неправильно использовать номер? 976 00:48:53,060 --> 00:48:56,930 ROB: Эх, вам не нужно. 977 00:48:56,930 --> 00:49:02,040 Если я гарантирован, что капитал 'A' - или, нижний регистр "а" минус капитал 'A' 978 00:49:02,040 --> 00:49:09,340 был ровно один бит, но вы не знаете, что это 32 - 979 00:49:09,340 --> 00:49:13,160 все будет работать так же хорошо, если бы 16-битной, которое было перевернуто - или 980 00:49:13,160 --> 00:49:14,610 Нет, я думаю, это wouldn't - 981 00:49:14,610 --> 00:49:18,270 или 64 бит были перевернуты, возможно. 982 00:49:18,270 --> 00:49:23,230 Но вы не должны использовать 32. 983 00:49:23,230 --> 00:49:26,141 Вы могли бы вместо этого использовать нижний регистр 'A' '' минус капитала. 984 00:49:26,141 --> 00:49:29,340 >> SPEAKER 32: Хорошо. 985 00:49:29,340 --> 00:49:32,996 Что вы можете сделать, если вы чувствуете, как вы пишете слишком много, что вы можете определить его 986 00:49:32,996 --> 00:49:33,435 в верхней части. 987 00:49:33,435 --> 00:49:41,830 Таким образом, вы можете быть, как, разница INT = нижний регистр 'A' '' минус капитала. И 988 00:49:41,830 --> 00:49:43,980 Затем вы можете ввести разницу вместо этого. 989 00:49:43,980 --> 00:49:45,110 Вот в силе. 990 00:49:45,110 --> 00:49:48,002 Но только с помощью номер 32 это своего рода - 991 00:49:48,002 --> 00:49:51,104 SPEAKER 33: Даже если это из-за того, что это 32-разрядная? 992 00:49:51,104 --> 00:49:52,570 ALI: Да. 993 00:49:52,570 --> 00:49:54,960 ROB: Там может быть - 994 00:49:54,960 --> 00:49:57,780 Единственной гарантией нам нужно сделать вам, что разница между 995 00:49:57,780 --> 00:49:59,480 строчные и прописные является один бит. 996 00:49:59,480 --> 00:50:04,670 Это не должно иметь значения, что происходит с 32-битной который перевернулся. 997 00:50:04,670 --> 00:50:06,610 За время соображений, мы начнем собирается по этому поводу. 998 00:50:09,170 --> 00:50:10,370 Ничего страшного, если вы еще не закончили. 999 00:50:10,370 --> 00:50:13,090 Не беспокойтесь об этом. 1000 00:50:13,090 --> 00:50:16,260 ROB: предполагается, что с собой буквы - 1001 00:50:16,260 --> 00:50:18,030 Мы не должны считать это с большой буквы. 1002 00:50:18,030 --> 00:50:20,750 Мы знаем, что с является заглавная буква, после этого время цикла - 1003 00:50:20,750 --> 00:50:22,160 Сделай цикла. 1004 00:50:22,160 --> 00:50:28,590 Таким образом, это означает, что выглядит примерно так 'A'. Поэтому если мы хотим довести это 1005 00:50:28,590 --> 00:50:32,895 'А' до этого 'а', что нам нужно делать? 1006 00:50:36,890 --> 00:50:41,920 Так как же нам преобразовать и перевернуть немного? 1007 00:50:48,040 --> 00:50:49,450 ALI: Как мы переверните его? 1008 00:50:49,450 --> 00:50:53,010 >> ROB: Итак, мы знаем, что мы хотим, чтобы перевернуть 32 бит. 1009 00:50:53,010 --> 00:50:59,722 Так что будем делать "а" минус "А", или мы могли бы написать 32, но - 1010 00:50:59,722 --> 00:51:03,090 палки, это наоборот. 1011 00:51:03,090 --> 00:51:07,250 ALI: Хорошо, так вот это Роб расчета этого числа, магическое число 32. 1012 00:51:07,250 --> 00:51:12,000 Таким образом, он выяснить, где что немного флип области будет. 1013 00:51:12,000 --> 00:51:14,810 А то, что мы ставим вопрос, где знаки? 1014 00:51:14,810 --> 00:51:16,740 ROB: Как мы перевернем этот бит? 1015 00:51:16,740 --> 00:51:22,784 С точки зрения прописной буквы, это 0, и мы хотим стать 1. 1016 00:51:22,784 --> 00:51:23,660 SPEAKER 34: |. 1017 00:51:23,660 --> 00:51:24,910 ROB: Да. 1018 00:51:28,780 --> 00:51:38,190 Так что это нам говорит, что мы взять 'A'. Мы ORing его с 0 - 1019 00:51:38,190 --> 00:51:40,750 1000 - 1020 00:51:40,750 --> 00:51:44,720 и что = то. 1021 00:51:44,720 --> 00:51:45,930 ALI: Имеет ли это смысл для всех? 1022 00:51:45,930 --> 00:51:48,812 Мы можем пройти через это по крупицам, если хотите. 1023 00:51:52,030 --> 00:51:56,300 SPEAKER 35: Вы [неразборчиво]? 1024 00:51:56,300 --> 00:51:57,590 ALI: Где знаком минус? 1025 00:51:57,590 --> 00:51:58,500 ROB: О, вы имеете в виду здесь? 1026 00:51:58,500 --> 00:51:59,070 ALI: О, да. 1027 00:51:59,070 --> 00:52:00,140 ROB: Я думаю, это нам. 1028 00:52:00,140 --> 00:52:05,670 Мы могли бы сказать 32, и теперь мы просто с помощью побитового оператора. 1029 00:52:05,670 --> 00:52:07,010 Али: Нам не нравится магия чисел. 1030 00:52:07,010 --> 00:52:10,460 Мы не собираемся этого делать. 1031 00:52:10,460 --> 00:52:13,592 Кроме того, я думаю, что мы должны просто использовать оператор побитового - 1032 00:52:13,592 --> 00:52:19,042 SPEAKER 36: Если вы используете ^, вы будете получать 32? 1033 00:52:19,042 --> 00:52:19,980 SPEAKER 37: Да, я думаю - 1034 00:52:19,980 --> 00:52:21,090 ROB: Да, вы будете. 1035 00:52:21,090 --> 00:52:23,320 Али: Это, как вы сделали бы это для выезда 1036 00:52:23,320 --> 00:52:25,370 от столицы в нижний регистр. 1037 00:52:25,370 --> 00:52:31,130 >> Теперь любой может сказать мне, почему Роб и я изменил строку, и как мы пошли 1038 00:52:31,130 --> 00:52:34,040 из прописных строчными, а строчные в 1039 00:52:34,040 --> 00:52:37,810 верхний регистр, как мы делали раньше? 1040 00:52:37,810 --> 00:52:44,520 Кто-нибудь есть какие-либо идеи, почему это может быть сложнее? 1041 00:52:44,520 --> 00:52:44,880 ROB: Так что мы сделаем - 1042 00:52:44,880 --> 00:52:46,178 ALI: Да, идти вперед. 1043 00:52:46,178 --> 00:52:49,640 SPEAKER 38: | Оператор было только действительно хороший для добавления. 1044 00:52:49,640 --> 00:52:51,200 ALI: Да, именно так. 1045 00:52:51,200 --> 00:52:58,320 ROB: Итак, что мы хотим сделать в нижнего регистра в верхний случае, 1046 00:52:58,320 --> 00:53:00,175 преобразовать это 'а' - 1047 00:53:08,540 --> 00:53:14,820 таким образом, мы хотим положить в некоторых номерах здесь и использовать некоторые оператора так, чтобы он 1048 00:53:14,820 --> 00:53:21,910 из к капиталу А. Мы все еще, вероятно, с использованием 32 так или иначе, но теперь, как мы делаем 1049 00:53:21,910 --> 00:53:25,280 получить это, чтобы выйти на это? 1050 00:53:40,910 --> 00:53:42,750 Таким образом, с - 1051 00:53:42,750 --> 00:53:44,000 ой, я все еще хочу, что слишком - 1052 00:53:46,940 --> 00:53:51,055 ALI: Так что теперь, если мы преобразования из нижнего регистра в верхний снова, то мы 1053 00:53:51,055 --> 00:53:55,170 сделать ^ операцию, как вы, ребята сказали. 1054 00:53:55,170 --> 00:53:57,650 ROB: Есть и другие способы вы можете делать вещи. 1055 00:53:57,650 --> 00:54:01,680 Многие операторы побитового в конечном итоге очень легко определяемые в терминах 1056 00:54:01,680 --> 00:54:03,460 другие операторы побитового. 1057 00:54:03,460 --> 00:54:11,150 Так что я собираюсь, чтобы не использовать ^ или на всех, но ^ работал прекрасно. 1058 00:54:11,150 --> 00:54:17,910 >> ALI: Хорошо, мы собираемся пойти на последней проблемы, которая является основным - 1059 00:54:17,910 --> 00:54:22,390 Последняя проблема заключается в преобразовании что-то в двоичный. 1060 00:54:22,390 --> 00:54:26,350 Так, например, у вас есть 50, а затем преобразовать его в 1061 00:54:26,350 --> 00:54:31,400 двоичный, который является 110010. 1062 00:54:31,400 --> 00:54:36,010 И я думаю, что вы, ребята, все знают о бинарных от лекции. 1063 00:54:36,010 --> 00:54:39,270 И вы также не должны ставить любой ведущей 0s в ней. 1064 00:54:39,270 --> 00:54:41,460 ROB: Вы можете игнорировать эту часть на данный момент. 1065 00:54:41,460 --> 00:54:45,250 На первом этапе, вы можете сделать это так, чтобы было ведущим 0s. 1066 00:54:45,250 --> 00:54:49,200 И тогда мы можем изменить, что не имеют ведущих 0s, если у нас есть время. 1067 00:54:49,200 --> 00:54:50,630 ALI: Так что не беспокойтесь об этом. 1068 00:54:50,630 --> 00:54:52,620 Попробуйте получить в двоичной системе. 1069 00:54:55,880 --> 00:54:59,855 Хорошее место для начала было бы - 1070 00:54:59,855 --> 00:55:02,010 ROB: Мы должны попросить целое. 1071 00:55:02,010 --> 00:55:03,150 ALI: О да, это хорошо. 1072 00:55:03,150 --> 00:55:04,170 Мы можем начать с этого. 1073 00:55:04,170 --> 00:55:06,870 Таким образом, вы можете изменить строку. 1074 00:55:06,870 --> 00:55:08,840 Таким образом, вместо характер, теперь мы имеем дело с целыми числами. 1075 00:55:13,670 --> 00:55:14,920 Круто? 1076 00:55:20,630 --> 00:55:25,300 >> ROB: И что теперь наша сделай то время как условие будет? 1077 00:55:25,300 --> 00:55:27,750 Он просит неотрицательное целое число. 1078 00:55:31,080 --> 00:55:34,280 Али: Когда мы хотим сохранить с помощью которого пользователь что-то другое? 1079 00:55:34,280 --> 00:55:35,950 Когда это меньше, чем 0. 1080 00:55:35,950 --> 00:55:36,760 ALI: Верно. 1081 00:55:36,760 --> 00:55:38,010 ROB: В то время я меньше 0. 1082 00:55:41,090 --> 00:55:45,120 Али: Теперь мы хотим, чтобы преобразовать его. 1083 00:55:45,120 --> 00:55:48,150 Вы, ребята, есть какие-либо идеи, что делать? 1084 00:55:48,150 --> 00:55:49,400 Любые намеки? 1085 00:55:53,610 --> 00:55:54,984 Да. 1086 00:55:54,984 --> 00:55:57,344 SPEAKER 39: Есть ли у нас, чтобы преобразовать его, или мы можем просто напечатать некоторые 0 и 1 1087 00:55:57,344 --> 00:55:58,760 , который был бы правильный номер? 1088 00:55:58,760 --> 00:56:02,070 Не могли бы вы сделать для петли и отсчитывать по степеням 2? 1089 00:56:02,070 --> 00:56:03,320 ROB: Да. 1090 00:56:05,750 --> 00:56:08,425 Вам не нужно конвертировать я в двоичное - 1091 00:56:08,425 --> 00:56:13,720 двоичного представления я не помещается внутри я. 1092 00:56:13,720 --> 00:56:19,090 Вам просто нужно распечатать двоичного представления я. 1093 00:56:19,090 --> 00:56:21,010 ALI: Другими словами, вы не должны идти по степеням двойки. 1094 00:56:21,010 --> 00:56:23,710 ROB: Потому что я уже хранятся в виде бинарных файлов, поэтому вам не нужно 1095 00:56:23,710 --> 00:56:25,110 преобразовать его в двоичный формат. 1096 00:56:25,110 --> 00:56:27,260 Просто зайдите на его двоичный, и распечатать его. 1097 00:56:30,080 --> 00:56:32,140 И вы будете нуждаться, чтобы использовать Побитовая, потому что вы хотите посмотреть на 1098 00:56:32,140 --> 00:56:33,390 фактические биты. 1099 00:56:37,060 --> 00:56:38,600 Вам не нужно использовать Побитовая, но, пожалуйста. 1100 00:56:44,130 --> 00:56:47,160 И это на самом деле - 1101 00:56:47,160 --> 00:56:50,200 Вы просто можете сделать степеням двойки, умножив на 2. 1102 00:56:50,200 --> 00:56:55,120 Мы пойдем по одному из двух последних бинарные операторы побитового 1103 00:56:55,120 --> 00:56:56,410 которые этим. 1104 00:56:56,410 --> 00:56:58,730 Поэтому, когда вы берете - 1105 00:56:58,730 --> 00:57:00,083 >> ALI: Можете ли вы пройти через них обоих? 1106 00:57:00,083 --> 00:57:01,440 ROB: Да. 1107 00:57:01,440 --> 00:57:03,050 Итак, давайте с 9. 1108 00:57:03,050 --> 00:57:05,210 Таким образом, 9 сдвиг влево 1 - 1109 00:57:05,210 --> 00:57:12,220 что сдвиг влево средства просто переместить все биты влево и вставить 0. 1110 00:57:12,220 --> 00:57:15,530 Таким образом, мы движемся все биты от 9 до левого 1111 00:57:15,530 --> 00:57:20,240 положение, которое дает нам - 1112 00:57:26,530 --> 00:57:31,570 Так, заметьте, мы перешли все оставили одного, и вставил 0 на 1113 00:57:31,570 --> 00:57:32,730 правая сторона. 1114 00:57:32,730 --> 00:57:36,755 Если бы мы сдвигается влево на два, мы хотели бы переложить все оставили по два, 1115 00:57:36,755 --> 00:57:41,950 и вставьте две 0s, чтобы заполнить пробелы. 1116 00:57:41,950 --> 00:57:43,200 Вопрос? 1117 00:57:44,890 --> 00:57:47,510 ALI: Итак сдвиг вправо делает подобную вещь. 1118 00:57:47,510 --> 00:57:53,190 Если у вас есть 9 Сдвиг вправо 1, то вы просто движущиеся все на 1119 00:57:53,190 --> 00:57:57,890 Право, вы теряете цифры, таким образом, 100 вместо. 1120 00:57:57,890 --> 00:58:04,142 ROB: Таким образом, вы это прекрасно, что вы теряете немного, что случилось, все 1121 00:58:04,142 --> 00:58:05,200 до упора вправо. 1122 00:58:05,200 --> 00:58:08,850 Существуют различные типы правых сдвигов, но в принципе вы можете думать 1123 00:58:08,850 --> 00:58:11,410 Сдвиг вправо, как только делением на 2. 1124 00:58:11,410 --> 00:58:14,430 И вы можете думать о сдвигом влево, как умножить на 2. 1125 00:58:14,430 --> 00:58:16,490 Так что если вы превратили этот - 1126 00:58:16,490 --> 00:58:22,350 Если перевести 9 сдвига 1, которая равна 10010, если вы на самом деле произошло 1127 00:58:22,350 --> 00:58:25,100 через двоичные и понял, что это было, было бы просто 18. 1128 00:58:25,100 --> 00:58:26,880 Мы просто умножить на 2. 1129 00:58:26,880 --> 00:58:30,982 1001 левый Shift 2 будет 36. 1130 00:58:30,982 --> 00:58:32,400 Мы умножить на 4. 1131 00:58:41,740 --> 00:58:45,360 Хорошо, прохладно, так что это удобно оператору побитового для этого. 1132 00:58:52,570 --> 00:58:53,330 Более путаницы? 1133 00:58:53,330 --> 00:58:54,870 Вы, ребята, хотите попробовать? 1134 00:58:54,870 --> 00:58:58,970 Или мы можем просто перейти в правом и запустить его? 1135 00:58:58,970 --> 00:59:01,140 ROB: Мы, вероятно, следует перейти прямо дюйма 1136 00:59:01,140 --> 00:59:01,880 ALI: Да, ладно. 1137 00:59:01,880 --> 00:59:03,370 Роб: И пройти через это вместе. 1138 00:59:03,370 --> 00:59:04,440 >> ALI: Ну, я просто пойду в нее. 1139 00:59:04,440 --> 00:59:09,700 Так что, как он сказал в начале, что мы собираемся просто пройти по крупицам. 1140 00:59:09,700 --> 00:59:11,890 Так что мы собираемся нуждаться в петлю. 1141 00:59:11,890 --> 00:59:16,730 Кто-нибудь есть идея лучший вид цикла, чтобы пройти через это? 1142 00:59:16,730 --> 00:59:20,544 У нас в то время как петли, сделай то время как петли, для петель. 1143 00:59:20,544 --> 00:59:22,400 SPEAKER 40: Do-время цикла? 1144 00:59:22,400 --> 00:59:25,150 ROB: Итак, помните, что я говорил о том, мы используем только делать-а 1145 00:59:25,150 --> 00:59:27,390 петлями, чтобы получить пользовательский ввод. 1146 00:59:27,390 --> 00:59:30,890 Вы никогда не будете в значительной степени когда-либо использовать их для чего-либо еще. 1147 00:59:30,890 --> 00:59:33,660 ALI: Проблема с делать-а петель он делает что-то, прежде чем она проверяет 1148 00:59:33,660 --> 00:59:34,470 состоянии. 1149 00:59:34,470 --> 00:59:36,540 Таким образом, он может сделать что-то плохое - 1150 00:59:36,540 --> 00:59:38,640 нравится, больно - 1151 00:59:38,640 --> 00:59:40,350 сделать то, что это не возможно. 1152 00:59:40,350 --> 00:59:42,290 Итак, вы хотите проверить в первую очередь. 1153 00:59:42,290 --> 00:59:47,620 ROB: Там очень много случаев, когда вы можете использовать сделай то время как петли, но люди 1154 00:59:47,620 --> 00:59:52,120 не ожидаю, что вы использовать их, если это пользовательский ввод. 1155 00:59:52,120 --> 00:59:54,215 Таким образом, мы использовали наш сделай то время как цикл, чтобы получить я. 1156 00:59:57,160 --> 01:00:01,260 Сколько раз наш цикл захочет цикла? 1157 01:00:01,260 --> 01:00:04,060 Мы хотим, чтобы цикл по каждому из битов я. 1158 01:00:04,060 --> 01:00:06,302 Сколько битов в I? 1159 01:00:06,302 --> 01:00:07,266 SPEAKER 41: 32. 1160 01:00:07,266 --> 01:00:07,750 ALI: Да. 1161 01:00:07,750 --> 01:00:09,850 ROB: Итак, есть 32 бит. 1162 01:00:09,850 --> 01:00:12,920 Мы не хотим сказать, 32. 1163 01:00:12,920 --> 01:00:16,230 Вместо этого мы хотим сказать SizeOf - 1164 01:00:16,230 --> 01:00:18,226 которые, вы видели, что в классе еще? 1165 01:00:18,226 --> 01:00:19,100 ALI: Нет. 1166 01:00:19,100 --> 01:00:20,380 ROB: Почему говорят, что использовать - 1167 01:00:20,380 --> 01:00:22,160 SizeOf (INT) раз 8 - 1168 01:00:22,160 --> 01:00:23,530 ALI: Итак, SizeOf есть - 1169 01:00:23,530 --> 01:00:27,050 >> SPEAKER 42: [неразборчиво] 1170 01:00:27,050 --> 01:00:27,440 ALI: Интересно. 1171 01:00:27,440 --> 01:00:31,610 Таким образом, SizeOf является встроенный в C функции, где она просто говорит вам, 1172 01:00:31,610 --> 01:00:32,500 число битов в - 1173 01:00:32,500 --> 01:00:33,220 ROB: Bytes. 1174 01:00:33,220 --> 01:00:34,210 ALI: Bytes, извините - 1175 01:00:34,210 --> 01:00:39,990 число байт, переменная для хранения значения. 1176 01:00:39,990 --> 01:00:46,205 Так что я думаю, что он перешел в класс, то Int составляет 4 байта может быть. 1177 01:00:46,205 --> 01:00:46,610 Круто? 1178 01:00:46,610 --> 01:00:50,610 ROB: Но вы не должны знать, что Int составляет 4 байта. 1179 01:00:50,610 --> 01:00:52,670 Вы должны быть в состоянии сказать - 1180 01:00:52,670 --> 01:00:55,870 Вы должны использовать SizeOf (INT), чтобы получить 4 байт. 1181 01:00:55,870 --> 01:00:59,170 И это на самом деле важно для некоторых вещей. 1182 01:00:59,170 --> 01:01:01,650 Int может быть не 4 байт. 1183 01:01:01,650 --> 01:01:04,050 На другом компьютере Int может быть 8 байт. 1184 01:01:04,050 --> 01:01:08,500 Так что ваша программа не будет работать на компьютере, потому что вы жестко 32 1185 01:01:08,500 --> 01:01:12,230 Биты, когда на этом компьютере происходит с 64 бит. 1186 01:01:12,230 --> 01:01:15,260 ALI: Итак, у вас есть общее число битов, которые вы хотите, чтобы развернуться. 1187 01:01:15,260 --> 01:01:17,480 Роб: А разница между байт и бит, что 1188 01:01:17,480 --> 01:01:19,100 8 бит в байте. 1189 01:01:19,100 --> 01:01:22,110 Таким образом, SizeOf (INT) возвращает 4 байта, то мы должны умножить это 1190 01:01:22,110 --> 01:01:24,420 на 8, чтобы получить 32 бит. 1191 01:01:24,420 --> 01:01:27,680 >> ALI: Итак, мы знаем, что максимальные и мы знаем, что мы хотим, чтобы перейти от - 1192 01:01:27,680 --> 01:01:29,260 Мы хотим, чтобы пройти через все из них. 1193 01:01:29,260 --> 01:01:32,950 Поэтому мы хотим, чтобы перейти от 0 до numBits. 1194 01:01:32,950 --> 01:01:37,160 Так кто-нибудь знает, как написать цикл для этого? 1195 01:01:37,160 --> 01:01:37,790 Любой? 1196 01:01:37,790 --> 01:01:39,680 SPEAKER 43: [неразборчиво] 1197 01:01:39,680 --> 01:01:44,130 ALI: Итак, вы хотите, чтобы пересечь номер я с нулевого бита 1198 01:01:44,130 --> 01:01:47,840 Первый бит, второй бит, третий бит, все пути к numBits. 1199 01:01:47,840 --> 01:01:50,972 Максимальное количество битов, которые вы можете получить. 1200 01:01:54,420 --> 01:01:57,780 ROB: Что общего цикла мы используем то, что мы хотим сделать что-то х раз? 1201 01:01:57,780 --> 01:01:58,280 ALI: Для. 1202 01:01:58,280 --> 01:01:59,280 Perfect. 1203 01:01:59,280 --> 01:02:00,440 Таким образом, у нас есть для. 1204 01:02:00,440 --> 01:02:05,242 И тогда мы создадим итератор, который не собирается быть я. 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 Поэтому мы начнем с 0. 1208 01:02:09,740 --> 01:02:13,110 И тогда мы будем иметь условие, чтобы убедиться, пока вы 1209 01:02:13,110 --> 01:02:14,968 происходит через него каждый раз - 1210 01:02:14,968 --> 01:02:16,960 [Промежуточные VOICES] 1211 01:02:16,960 --> 01:02:17,960 ROB: J. 1212 01:02:17,960 --> 01:02:19,970 ALI: J меньше, чем numBits. 1213 01:02:19,970 --> 01:02:23,680 Таким образом, мы не хотим, чтобы сделать фактически равен единице, потому что они numBits 1214 01:02:23,680 --> 01:02:25,365 общая, и мы начинаем с 0. 1215 01:02:25,365 --> 01:02:26,360 Таким образом, мы фактически будем иметь - 1216 01:02:26,360 --> 01:02:27,400 SPEAKER 44: Oh. 1217 01:02:27,400 --> 01:02:29,300 ALI: индексы не закончится в numBits минус 1. 1218 01:02:29,300 --> 01:02:34,070 ROB: Занумеруем биты от 0 до 31, мы не маркировать их от 1 до 32. 1219 01:02:34,070 --> 01:02:36,970 ALI: А потом мы собираемся увеличивать каждый раз на один, потому что мы хотим 1220 01:02:36,970 --> 01:02:38,050 проверить все до единого. 1221 01:02:38,050 --> 01:02:39,851 Таким образом, мы пойдем J + +. 1222 01:02:39,851 --> 01:02:42,740 >> SPEAKER 45: Почему вы это делаете? 1223 01:02:42,740 --> 01:02:46,100 SPEAKER 46: Зачем вы едете через каждый бит? 1224 01:02:46,100 --> 01:02:49,310 ROB: Поэтому мы хотим, чтобы пройти через каждый бит и - 1225 01:02:52,780 --> 01:02:55,100 Так скажем, у нас есть некоторое число. 1226 01:02:55,100 --> 01:02:56,195 ALI: 68. 1227 01:02:56,195 --> 01:02:57,470 ROB: Мы можем использовать 68. 1228 01:02:57,470 --> 01:03:00,450 Таким образом, двоичный это будет 100100. 1229 01:03:00,450 --> 01:03:05,540 Так что это внутри меня, и мы хотим перейти на каждом из этих битов. 1230 01:03:05,540 --> 01:03:06,450 Это 1? 1231 01:03:06,450 --> 01:03:07,320 Распечатать 1. 1232 01:03:07,320 --> 01:03:08,120 Разве 0? 1233 01:03:08,120 --> 01:03:09,100 Распечатать 0. 1234 01:03:09,100 --> 01:03:10,530 Тогда мы идем к следующему немного. 1235 01:03:10,530 --> 01:03:11,210 Это 1? 1236 01:03:11,210 --> 01:03:11,610 Распечатать 1. 1237 01:03:11,610 --> 01:03:11,830 Является 0? 1238 01:03:11,830 --> 01:03:13,080 Распечатать 0. 1239 01:03:14,880 --> 01:03:16,710 ALI: Cool, хорошо. 1240 01:03:16,710 --> 01:03:22,880 Сейчас мы находимся на правильном индекс, где это бит. 1241 01:03:25,380 --> 01:03:28,080 Как мы можем убедиться, что конкретный один? 1242 01:03:28,080 --> 01:03:33,130 Скажем, мы находимся в = 0, поэтому мы хотим, чтобы проверить индексом 0 в бит. 1243 01:03:33,130 --> 01:03:37,980 Таким образом, в данном случае, это одно. 1244 01:03:37,980 --> 01:03:41,930 >> Так что теперь как же нам идти о проверке, - о, это было бы этого. 1245 01:03:41,930 --> 01:03:42,810 ROB: Да. 1246 01:03:42,810 --> 01:03:44,310 ALI: Извините. 1247 01:03:44,310 --> 01:03:47,930 Как бы мы идти о проверке, что одна, в смысле? 1248 01:03:47,930 --> 01:03:52,030 Как бы мы проверяем, если это 0 или 1? 1249 01:03:52,030 --> 01:03:52,730 Ну let's - 1250 01:03:52,730 --> 01:03:53,940 Класс: А 1? 1251 01:03:53,940 --> 01:03:54,390 ALI: И? 1252 01:03:54,390 --> 01:03:55,010 Да. 1253 01:03:55,010 --> 01:03:57,810 ROB: Так скажем, у нас уже есть 1. 1254 01:03:57,810 --> 01:04:02,470 Тогда это и это вернет ли это 1 или 0. 1255 01:04:05,580 --> 01:04:08,200 ALI: Итак, мы можем пойти вниз. 1256 01:04:08,200 --> 01:04:10,695 И мы можем сделать, как вы, ребята сказали, ведения и функции. 1257 01:04:13,810 --> 01:04:15,560 ROB: INT - 1258 01:04:15,560 --> 01:04:18,290 Как же я хочу сказать, что это - 1259 01:04:18,290 --> 01:04:24,250 Isone = я. 1260 01:04:24,250 --> 01:04:29,770 И в первый немного, мы, случается, смотрю, мы делаем я и 1. 1261 01:04:29,770 --> 01:04:33,302 Теперь то, что мы собираемся хотят и на второй бит? 1262 01:04:33,302 --> 01:04:34,294 SPEAKER 47: 2. 1263 01:04:34,294 --> 01:04:36,110 ROB: Да, второе, что мы находимся на 2. 1264 01:04:36,110 --> 01:04:39,100 ALI: Вы заметите, что 1 переехала к левой. 1265 01:04:39,100 --> 01:04:44,320 Так мы узнали любые битовые операторы, чтобы сделать эту функцию? 1266 01:04:44,320 --> 01:04:45,160 ROB: следующий - 1267 01:04:45,160 --> 01:04:46,280 ALI: Да, верно, именно так. 1268 01:04:46,280 --> 01:04:48,670 Так что это сдвиг влево. 1269 01:04:48,670 --> 01:04:51,120 Вместо того, чтобы всегда проверять с 1, мы собираемся перевести его. 1270 01:04:51,120 --> 01:04:53,470 И сколько раз мы собираемся перевести его? 1271 01:04:53,470 --> 01:04:59,340 Если мы проверяем одного нулевого затем мы собираемся, чтобы переместить его на нуле. 1272 01:04:59,340 --> 01:04:59,975 Да, именно так. 1273 01:04:59,975 --> 01:05:02,090 Таким образом, вы оставили переложить ее на J. 1274 01:05:02,090 --> 01:05:02,550 Perfect. 1275 01:05:02,550 --> 01:05:03,550 Итак, теперь мы знаем - 1276 01:05:03,550 --> 01:05:06,450 у нас есть эта Int от того, если это 1, а затем - 1277 01:05:10,690 --> 01:05:14,670 так Роба вид обмана здесь - 1278 01:05:14,670 --> 01:05:18,090 И вот теперь он шел впереди и он просто сказал, что если это на самом деле 1, 1279 01:05:18,090 --> 01:05:23,540 потому что 1 истинен, так что мы не должны говорить ISF Isone равен 1 - 1280 01:05:23,540 --> 01:05:29,210 так что если Isone, то мы печатаем 1, в противном случае мы печатаем 0. 1281 01:05:29,210 --> 01:05:33,350 >> ROB: Таким образом, наша программа имеет общую ошибку. 1282 01:05:33,350 --> 01:05:35,845 Ну, вопросов по этой первым. 1283 01:05:35,845 --> 01:05:41,692 SPEAKER 48: Можете ли Вы когда-либо Isone в четыре операции части и 1284 01:05:41,692 --> 01:05:47,804 пор это переложить себя как последняя часть? 1285 01:05:47,804 --> 01:05:50,050 Так Isone равна 1, а затем - 1286 01:05:50,050 --> 01:05:53,140 ROB: Да, можно. 1287 01:05:53,140 --> 01:05:57,200 Мы можем показать, что на самом деле, как только мы исправить ошибку, что я собираюсь 1288 01:05:57,200 --> 01:06:00,050 обсудить с Вами все. 1289 01:06:00,050 --> 01:06:03,470 Обратите внимание на порядок мы будем над вещами. 1290 01:06:03,470 --> 01:06:10,570 Учитывая это бинарное представление, мы, начиная с нулевого бита. 1291 01:06:10,570 --> 01:06:13,010 Если это 0, то мы печатаем - 1292 01:06:13,010 --> 01:06:15,620 Ну, это 0, поэтому мы печатаем 0. 1293 01:06:15,620 --> 01:06:16,860 Тогда мы идем к второй бит. 1294 01:06:16,860 --> 01:06:19,100 Это 0, поэтому мы печатаем 0. 1295 01:06:19,100 --> 01:06:20,290 Тогда мы идем к третьему немного. 1296 01:06:20,290 --> 01:06:22,950 Это 1, поэтому мы печатаем 1. 1297 01:06:22,950 --> 01:06:24,580 ALI: Так это происходит в обратном направлении. 1298 01:06:24,580 --> 01:06:27,906 Так как же вы, ребята, предлагаю исправить это и пойти другим путем? 1299 01:06:27,906 --> 01:06:28,900 SPEAKER 49: [неразборчиво] 1300 01:06:28,900 --> 01:06:29,490 ROB: Да. 1301 01:06:29,490 --> 01:06:34,500 Таким образом, вместо того, чтобы идти от 0 до numBits, мы пойдем от numBits бит в 0. 1302 01:06:34,500 --> 01:06:35,600 ALI: Итак, [неразборчиво] 1303 01:06:35,600 --> 01:06:36,940 всегда можно пойти другим путем. 1304 01:06:36,940 --> 01:06:38,970 ROB: NumBits минус 1, потому что это последний nubmer - 1305 01:06:38,970 --> 01:06:41,160 ALI: Потому что это идет от 0 до 31. 1306 01:06:41,160 --> 01:06:44,420 И тогда мы всегда убедитесь, что оно больше 0, поэтому вы не идете 1307 01:06:44,420 --> 01:06:46,100 слишком далеко вправо. 1308 01:06:46,100 --> 01:06:48,800 И тогда вы всегда будете вычитать от 1 до идем направо. 1309 01:06:48,800 --> 01:06:52,240 >> ROB: Итак, теперь у нас есть обратная петля, и это число обратно в печати 1310 01:06:52,240 --> 01:06:53,586 В правильном пути. 1311 01:06:53,586 --> 01:06:57,560 SPEAKER 50: Вам не придется менять сдвиг вещи тоже? 1312 01:06:57,560 --> 01:06:58,810 ALI: Итак, нет. 1313 01:07:03,810 --> 01:07:06,470 ROB: Мы делаем точно такой же операции, только теперь 1314 01:07:06,470 --> 01:07:07,470 в обратном порядке. 1315 01:07:07,470 --> 01:07:14,170 Таким образом, вместо того, чтобы делать сдвиг на numBits минус 1, чтобы получить все это 1316 01:07:14,170 --> 01:07:17,430 бит, а не делать, что в прошлом, мы просто делаем это в первую очередь. 1317 01:07:19,970 --> 01:07:22,970 По изменение этой сюда, мы обратном порядке все 1318 01:07:22,970 --> 01:07:24,190 что происходит внутри. 1319 01:07:24,190 --> 01:07:28,610 Но мы не хотим, чтобы изменить то, что происходит внутри вообще. 1320 01:07:28,610 --> 01:07:29,860 ALI: Есть ли в этом смысл? 1321 01:07:32,240 --> 01:07:33,660 Обработка? 1322 01:07:33,660 --> 01:07:41,200 Итак, кто-нибудь еще есть какие-то другие концептуальные вопросы? 1323 01:07:41,200 --> 01:07:45,030 ALI: Прежде чем мы углубимся в его точка которой - 1324 01:07:45,030 --> 01:07:46,280 ALI: Ладно, хорошо идти. 1325 01:07:48,350 --> 01:07:53,160 Роб: Вместо J, чтобы быть нашим - 1326 01:07:55,780 --> 01:08:00,550 вместо J, чтобы всегда перемещаться по, как один левый J смену, я думаю, что 1327 01:08:00,550 --> 01:08:04,120 Вы говорите, как, к J использовать себя. 1328 01:08:04,120 --> 01:08:09,560 Таким образом, для J - 1329 01:08:09,560 --> 01:08:14,656 Я думаю, это тяжело - = 1 << 31. 1330 01:08:14,656 --> 01:08:16,200 Это то, что я хочу? 1331 01:08:16,200 --> 01:08:18,470 Я думаю, что это << 31. 1332 01:08:18,470 --> 01:08:22,840 J> = 1. 1333 01:08:22,840 --> 01:08:32,319 J >>, >> Isone, я и J - 1334 01:08:32,319 --> 01:08:35,620 так что теперь вместо использования - 1335 01:08:35,620 --> 01:08:38,370 ALI: Вы постоянно движется J вместо того, 1336 01:08:38,370 --> 01:08:40,520 индекс, чтобы проверить его. 1337 01:08:40,520 --> 01:08:42,130 Это не так уж плохо. 1338 01:08:42,130 --> 01:08:43,960 Мы используем подобного рода логика. 1339 01:08:43,960 --> 01:08:46,202 Так что если вы вернетесь - 1340 01:08:46,202 --> 01:08:50,020 Да, но это будет его потерять. 1341 01:08:50,020 --> 01:08:51,380 Хорошо, вы только собираетесь набрать его снова. 1342 01:08:51,380 --> 01:08:56,880 Если вы заметили, что у нас есть 1 << J количество раз, и мы были 1343 01:08:56,880 --> 01:09:02,279 увеличивая J каждый раз на один шаг, но на этот раз вместо 1344 01:09:02,279 --> 01:09:06,010 они делают приращение J в верхнем внутри цикла. 1345 01:09:06,010 --> 01:09:10,890 Поэтому вместо того, всегда в движении его вниз - 1346 01:09:10,890 --> 01:09:15,220 ROB: Самая первая итерация цикла, у нас есть J 10000. 1347 01:09:15,220 --> 01:09:20,000 Следующей итерации цикла составляет 01000. 1348 01:09:20,000 --> 01:09:22,380 Следующая итерация в том, что. 1349 01:09:22,380 --> 01:09:26,800 И 1 просто будет держать распространяющиеся вниз, пока мы попали в очень 1350 01:09:26,800 --> 01:09:29,729 конца, где сейчас именно это. 1351 01:09:29,729 --> 01:09:33,990 Следующий, 1, будет оттолкнулся, и J больше не является больше 1352 01:09:33,990 --> 01:09:35,090 меньше или равна 1. 1353 01:09:35,090 --> 01:09:38,380 Я мог бы также положить больше 0, то же самое значение. 1354 01:09:38,380 --> 01:09:41,580 А потом это все. 1355 01:09:41,580 --> 01:09:43,720 Вопросы? 1356 01:09:43,720 --> 01:09:44,760 Да. 1357 01:09:44,760 --> 01:09:49,740 >> SPEAKER 51: [неразборчиво] 1358 01:09:49,740 --> 01:09:51,729 ROB: Так вот же, как - 1359 01:09:51,729 --> 01:09:57,270 Вы видели J + = 3? 1360 01:09:57,270 --> 01:10:00,960 Так это же, как и J = J + 3? 1361 01:10:00,960 --> 01:10:05,560 Вы можете сделать это практически для любого оператора в C. Так J >> = 3 1362 01:10:05,560 --> 01:10:10,490 равно J = J >> 3. 1363 01:10:13,980 --> 01:10:16,760 Так что работает также с операторами Побитовая. 1364 01:10:16,760 --> 01:10:19,630 И я не должна была поставить 31 здесь. 1365 01:10:19,630 --> 01:10:23,790 Я должен был положить numBits - 1. 1366 01:10:23,790 --> 01:10:25,380 ALI: Yay, никакой магии чисел. 1367 01:10:25,380 --> 01:10:29,070 Ладно, это 4:00, так что если вы, ребята, должны пойти - но есть ли в этом смысл? 1368 01:10:29,070 --> 01:10:30,320 Как вы, ребята, есть другие вопросы? 1369 01:10:33,920 --> 01:10:38,470 ROB: Я тоже собираюсь бросить в том, что если бы мы хотели - 1370 01:10:38,470 --> 01:10:41,326 был он обсуждал тройной оператор на всех? 1371 01:10:41,326 --> 01:10:42,730 ALI: Нет 1372 01:10:42,730 --> 01:10:45,090 Это нормально. 1373 01:10:45,090 --> 01:10:46,970 ROB: Так что вы можете смотреть на это в следующий раз. 1374 01:10:51,030 --> 01:10:52,080 ALI: Ладно, на самом деле? 1375 01:10:52,080 --> 01:10:53,150 Теперь вы просто показухи. 1376 01:10:53,150 --> 01:10:54,210 ROB: Нет, сейчас it's - 1377 01:10:54,210 --> 01:11:00,490 это то, что заставляет людей заинтересованных, и теперь они пойдут смотреть в него. 1378 01:11:00,490 --> 01:11:02,640 Так вот, что делает то же самое, за один шаг. 1379 01:11:05,150 --> 01:11:10,950 Итак, сначала проверьте, есть я и J 1? 1380 01:11:10,950 --> 01:11:12,530 Это правда? 1381 01:11:12,530 --> 01:11:17,000 Если это так, печать 1, другой, распечатать 0. 1382 01:11:17,000 --> 01:11:19,190 Али: Но делать это по-другому это прекрасно, как хорошо. 1383 01:11:19,190 --> 01:11:20,920 Он имеет такую ​​же логику. 1384 01:11:20,920 --> 01:11:22,730 Так что это не как одна - 1385 01:11:22,730 --> 01:11:24,620 ROB: На данный момент, мы можем избавиться от этих фигурные скобки, потому что это только 1386 01:11:24,620 --> 01:11:27,190 одна строка цикла. 1387 01:11:27,190 --> 01:11:29,370 ALI: Хорошо, так ли это смысл? 1388 01:11:29,370 --> 01:11:30,370 Это был вид прыжка. 1389 01:11:30,370 --> 01:11:34,870 Но это было только отчасти синтаксис, тем более. 1390 01:11:34,870 --> 01:11:36,250 >> Круто? 1391 01:11:36,250 --> 01:11:37,500 Любые другие вопросы? 1392 01:11:40,880 --> 01:11:41,570 ROB: Все в порядке. 1393 01:11:41,570 --> 01:11:42,310 ALI: Хорошо, прохладно. 1394 01:11:42,310 --> 01:11:43,560 Спасибо, что пришли к секции.