[Powered by Google Translate] [Электронны статычны гукі]
ROB: Добра, так што мы толькі што прывёў вас у гэты CS50 прасторы.
ALI: Пачакайце, пачакайце назад.
Сардэчна запрашаем у падзел!
ROB: Сардэчна запрашаем у падзел!
ALI: Ура!
ROB: Supersection!
Алі: Я Алі, і гэта Роб.
Такім чынам, зараз мы раскажам прасторы.
ROB: Так што мы толькі што прывёў вас у гэты CS50 прасторы.
Вы будзеце выкарыстоўваць гэта шмат у вашых частак у гэтым семестры.
У прынцыпе, мы ўжо мелі загрузцы прылады.
І вы можаце думаць аб CS50 прабелы як вэб-інтэрфейс размаўляў з прыборам
што мы маем на некаторыя сервера где-то.
Такім чынам, вы можаце запусціць свой код у гэтым інтэрфейсе, і мы
ўбачыць, як рабіць рэчы.
Вы таксама можаце паглядзець на код іншых людзей у гэтым раздзеле, і -
ALI: І, як некаторыя людзі выявілі, вы можаце мець зносіны людзям на баку.
І мы ўсе бачым, яна таксама, так што гэта цікава.
Заходзьце, прыйсці і сесці.
Сядайце.
>> ROB: Такім чынам, часткі -
ALI: Не, не, вы, хлопцы, можаце прыйсці.
ROB: Раздзелы будзе значна больш інтэрактыўным у гэтым семестры.
ALI: Аб, ён як -
Ох.
Добра, халаднавата.
Так што, калі вы, хлопцы, проста прыходзяць, вы можаце перайсці на гэтую спасылку, калі я магу атрымаць
там, прама там.
Мы не можам напісаць, таму што няма месца на плаце, але спасылку
прама тут, ідзі да гэтага на вашым кампутары, і вы ўвойдзеце CS50
Прасторы, якое з'яўляецца даволі крута.
Добра.
Ці ёсць у вас праблемы?
ROB: Такім чынам, вы можаце знайсці праблемы -
Мы павінны быць у стане напісаць гэта дзе-небудзь.
Так што, калі вы ідзяце ў cs50.net/psets і гэта хакер supersection -
і вы ідзяце ў Hacker выданне PSET адзін, паглядзіце на спецыфікацыі
дзесьці на старонцы -
>> Алі: Увогуле, у той час як Роб глядзіць, што мы збіраемся рабіць у
профіль сёння ёсць раздзел праблем -
ROB: - на старонцы восем.
ALI: - называецца частка праблемы -
ROB: Раздзел пытанняў.
ALI: Выбачайце, профіль пытанняў.
І гэта тое, што мы збіраемся перайсці -
тыя, што мы збіраемся перайсці на сённяшні дзень у раздзеле.
І мы збіраемся, каб закадаваць яго на CS50 прасторы, і мы спадзяемся, што будзе працаваць.
І мы можам толькі казаць праз іх.
І вы, хлопцы, можаце задаваць пытанні, калі вы адчуваеце -
>> ROB: Такім чынам, гэта дабіраецца, каб быць звычайнай з'явай у большасці psets.
Я думаю, што з гэтым, ён кажа, вы не павінны ўручыць гэтыя пытанні цалі
Але ідэя ў тым, што гэтыя пытанні ставяцца на PSET, і вы можаце прыйсці
профіль, каб гэтыя пытанні адказаў.
Ці, калі вы не прыйдзеце ў раздзеле, вы можаце адказаць на іх па сваім меркаванні або атрымліваць
дапамогу ў непрацоўны час ці нешта яшчэ.
Але гэтыя пытанні, якія, як мяркуецца, падрыхтоўчыя вас за праблема набору.
А на хакера выданне, шмат пытанняў можа быць проста аб
пашырэнне бягучых ведах CS.
ALI: Так, даволі шмат.
>> Добра, такім чынам, ёсць усе на CS50 прасторы?
Прывітанне, заходзь
Выступоўца 1: Ці можам мы ўбачыць URL яшчэ раз?
Роб: Так, гэта будзе лягчэй, калі вы на самой справе ў вашай секцыі і
ваша TF проста можа вам па электроннай пошце URL загадзя.
ALI: Yay, заняць месца.
Ёсць месцы тут.
Перадпакой панэль не так ужо дрэнна.
Што?
Такім чынам, CS50 прасторы, мы атрымліваем там.
Хто-небудзь ёсць якія-небудзь пытанні, перш чым мы пяройдзем да - што?
ROB: Там няма нават мел.
[Неразборліва]
ALI: Выбачайце.
Вы можаце выкарыстоўваць вашыя пазногці?
Мы знаходзімся ў вельмі нізкіх тэхналогій пакой для вельмі высокатэхналагічны клас.
Добра, гэта ўсё добрае?
Хто-небудзь ёсць яшчэ пытанні па гэтай нагоды?
Як я ўжо казаў, мы збіраемся прайсці праз профіль пытанняў
PSET спецыфікацый.
Такім чынам, ёсць толькі некалькі праблем, якія мы збіраемся
код у CS50 прасторы.
Ці ўсё добра?
Добра.
Добра?
ROB: Ці ёсць у Вас ноўтбук?
ALI: Вы можаце пагутарыць з Лукасам.
Ён сядзіць побач з вамі.
Склейванне часу.
>> ROB: Такім чынам, пачнем з першай праблемай?
ALI: Так.
Мы можам пачаць.
Вы хочаце мяне -
Я магу пайсці.
Такім чынам, мы пойдзем у PSET функцыі.
Ах, навошта ж гэта такое -
ROB: Control.
ALI: Такім чынам, мы ідзем у адказ на гэтыя рэчы, а?
ROB: О, так.
Так што -
ALI: О, зрабіў усё гадзіны Адзежа галоўных ролях шорты?
Добра, халаднавата.
ROB: Так, я не думаю, што мы абавязкова чакаў, што вы ёсць
глядзеў яго да прыезду ў дадзеным раздзеле, але мы можам абмяркоўваць гэтыя
праблемы загадзя, так як яны, у раздзеле пытанняў рэчы.
Так што калі вы яшчэ не глядзелі яго, не хвалюйцеся.
Тыя, хто можа паспрабаваць адказаць.
>> Такім чынам, першае пытанне, што з'яўляецца пре-працэсары, якім # ўключыць
ставіцца?
Так хто-небудзь ёсць адказ на гэта?
Алі: Вы, хлопцы, можаце казаць гэта.
Вядома, ісці наперад.
SPEAKER 2: # ўключыць некаторыя загадзя напісаныя кодам, і замест таго,
капіяванне і ўстаўка яго ў вашу праграму, проста кажу ўключыць яго,
папярэдняй апрацоўкі ведае, што ён там і што ён павінен дадаць яго ў
пазней ці раней нічога не адбываецца.
ALI: Так, дзіўны.
Cool.
ROB: Такім чынам, калі вы на самой справе кампіляцыі праграмы, папярэдне працэсар гэта
Першым крокам.
Кампіляцыя адбываецца ў чатыры вялікія крокі.
Так папярэдняй апрацоўкі з'яўляецца першай вялікай, і менавіта гэта хлопец, які ідзе
шляхам і шукае ўсе гэтыя хэш-сімвалы.
І любая радок, якая пачынаецца з знака, папярэдне працэсар глядзіць на яго і бачыць,
калі ён можа яго апрацаваць.
Такім чынам, # ўключыць распавядае папярэдняй апрацоўкі шукаць нейкія cs50.h
файл і проста скапіяваць і ўставіць яго змесціва ў гэты файл.
Такім чынам, вы сапраўды можаце # ўключыць усе, што заўгодна, але гэта ў асноўным будзе
. Ч файлы.
Мы яшчэ не дайшлі да # вызначыць яшчэ, так што не мае значэння.
Алі: Так, мы добрыя на тым.
Хто-небудзь ёсць якія-небудзь пытанні па гэтай нагоды?
Хіба мы добра?
Наступнае пытанне.
>> Выступоўца 3: У кароткатэрміновай было нешта пра С, а таксама.?
Хіба што адпаведныя ці гэта не мае значэння?
ROB: а с з папярэдняй апрацоўкі.?
Выступоўца 3: Так, ці я зрабіў нешта?
ROB: Так коратка можна было б паказваць папярэдняй апрацоўкі гэтага файла і
. Выводзіць яго ў іншы файл з, так што вы можаце папярэдне апрацаваць гэты файл -
калі вы проста працаваць, як, зрабіць прывітанне або ляск hello.c, вы робіце ўсё
кампіляцыі ў адзін вялікі крок.
Але вы можаце зрабіць гэта відавочна на асобныя крокі.
Такім чынам, спачатку вы можаце папярэдне апрацаваць.
Тады вы можаце скампіляваць, то можна сабраць, а затым вы можаце звязаць.
Мы дабяромся да тых, іншых.
Але папярэдняй апрацоўкі, вы, здаецца, папярэдняй апрацоўкі, а затым ён пераходзіць у
іншае. з файлам.
Таму што папярэдняя апрацоўка сапраўды не зменіцца нічога.
Гэта проста куча капіявання і ўстаўкі.
Вы можаце ўручную скапіяваць і ўставіць яго самастойна.
ALI. І каб было ясна, з файл ўяўляе сабой файл C, так што гэта
напісана ў код C.
Такім чынам, ён збіраецца з кода C кода C.
Ты проста дадаць больш кода з фунта.
ROB: Калі вы папярэдне апрацаваны, яна ўсё яшчэ сапраўдны файл C.
Выступоўца 3: Добра.
ALI: Добры пытанне.
Мне гэта падабаецца.
Добра, наступны пытанне.
>> Што такое кампілятар?
Любы?
Так.
Выступоўца 4: Ён змяняе папярэдняй апрацоўкі кода ў зборцы.
ALI: Perfect.
ROB: Так.
ALI: Круто.
ROB: Дык вось што кампілятар робіць спецыяльна
калі мы выкарыстоўваем Clang.
У самым агульным сэнсе, кампілятар дакладна гэтак жа як з кодам на адной мове
і ператварэнне яго ў іншую мову.
Такім чынам, у C -
або, ну, Clang прымае код, які знаходзіцца ў C і ператварэння яго ў зборку.
І вы не павінны быць у стане зразумець зборку на ўсіх.
Але гэта мова, на якім ён ператварыўшы яго ў.
>> ALI: Добра.
І потым, што гэта асэмблер?
Любы?
SPEAKER 5: [неразборліва] ў двойкавую?
ALI: Выбачайце, што?
SPEAKER 5: [неразборліва] ў двойкавую?
ROB: Так.
ALI: Так.
ROB: Так асэмблер -
ассемблерный код вельмі, вельмі блізка да таго, што ваш кампутар можа зразумець,
Але памятайце, што ён не зусім разумее тэкст
гэта значыць асэмблеры.
Вы павінны пераўтварыць яго ў прамой 1 і 0.
Гэта падобна на працэс прамога перакладу.
Мы маглі б проста даць вам табліцу, якая адлюстроўвае тое, што кожны
інструкцыя па мантажы сродкаў.
Але асэмблер проста рабіць гэты пераклад для вас.
Гэта пераўтварэнне кода зборкі ў 1 і 0.
>> ALI: І потым, для апошняга, што кампаноўнік?
І як-lcs50 ставіцца?
Любы?
ROB: Гэта самая складаная і найменш патлумачыў адзін у кампілятар відэа.
ALI: Хто-небудзь памятае праводзіны lcs50 ў камандзе?
SPEAKER 6: Калі Вы зайшлі на зрабіць.
ALI: Гэта ў зрабіць.
Так, прахалодна, добра.
Ці ёсць якія-небудзь здагадкі або расплывістыя - так, ідуць.
SPEAKER 7: Я не ўпэўнены, таму што ваша кароткая было сапраўды [неразборліва], але гэта было
нешта рабіць асобныя файлы з кожнай бібліятэцы, а затым пакласці
іх усё разам у адной бібліятэкі?
ROB: Так.
Таму, калі ў вас ёсць hello.c, гэта вельмі просты праграмы.
Вы сапраўды робіце толькі адну рэч у гэтым.
Але калі вы трапляеце ў іншых праграмах -
і я думаю, нават калі вы GetString ў сваіх праграмах, вам трэба, каб пачаць
уключаючы іншыя файлы.
Такім чынам, бібліятэка CS50 з'яўляецца адным з такіх файлаў, у якіх у нас ёсць рэалізацый
з GetString і GetInt і ўсе гэтыя рэчы.
Так што кампаноўнік робіць гэта ідзе вакол, гледзячы праз усе гэтыя
Файлы, бачачы, дзе функцыі вызначаны, пераканаўшыся, што калі я тэлефаную
GetString дзесьці, ён ведае, што GetString азначае, што гэта
GetString больш у CS50 бібліятэкі.
Такім чынам, кампаноўнік проста прымае ўсе гэтыя файлы, разбівае іх разам, і цяпер
ў вас ёсць выкананы файл.
Так што майце на ўвазе, што калі вы выкарыстоўваеце CS50 бібліятэку, неабходна як
# Уключыць у верхняй частцы, а затым і ў вашай маркі каманду, як вы
сказаў, вы павінны мець-lcs50.
Такім чынам, вы не можаце проста ёсць.
Так што гэта проста нешта, каб мець на ўвазе на будучыню.
>> SPEAKER 8: Такім чынам, выкажам здагадку, што была яшчэ адна бібліятэка, як cs51.h, мы б
Таксама трэба дадаць, lcs51?
ROB: Адзіная прычына гэтага-lcs50 працуе выдатна, таму што мы ёсць, што набор
ў пэўнае месца ў вашай тэхнікай, так што ён ведае, што
-Lcs50 сродкаў.
Мы маглі б проста даць вам cs50.c файл, а затым вы можаце скампіляваць яго, сказаўшы,
Clang hello.c cs50.c, а затым гэта зробіць ваш выкананы файл, паклаўшы
гэтыя два файла разам.
Яна ведае, што-lcs50 азначае cs50.c больш у пэўным каталогу, які мы паказалі ў
Вашы прыборы.
Так што калі вы хацелі cs51.c быць дакладна вызначаны шляхам проста кажу-lcs51,
то мы таксама павінны пакласці яго ў гэтым каталогу таму ён ведае, дзе
шукаць.
ALI: Якім быў ваш пытанне?
>> SPEAKER 7: Чаму вы павінны звязаць CS50
калі - wasn't яго скапіяваць / ўставіць на першым этапе, калі вы папярэдне апрацаваныя гэта?
ALI: Вы хочаце ўзяць?
ROB: Вядома.
Так cs50.h файла асобна ад cs50.c файл C.
Вы дабраліся да прататыпаў функцый у класе?
Добра.
Так у асноўным, файл cs50.h проста будзе скапіяваць і ўставіць -
ALI: Вы, хлопцы, ведаеце, што подпісы?
Такім чынам, даволі шмат, калі вы паглядзіце на -
ROB: Давайце прадставім, cs50.h няма.
Цяпер гэты файл -
Вы робіце = GetString радок з.
Але калі мы дайшлі да гэтай кропкі ў кодзе, ён паняцця не мае, што
GetString ёсць.
Ён ведае, што гэта функцыя, так як вы называеце яго.
Але ён не ведае, што гэта на самай справе павінна вяртаць радок.
Так як я ўжо сказаў, радок S = GetInt, гэта не мае ніякага сэнсу, так як
Вы падпісаннем цэлага ліку ў радок.
Але ён не ведае, што GetString мае сэнс, таму што яна не
Вядома, што GetString вяртае радок.
Так што cs50.h кажа нешта накшталт гэтага.
ALI: Дык што Роб друкуе тым, што гэта абяцанне такім чынам, што яна збіраецца
ёсць гэтая функцыя завецца GetString.
ROB: Гэта ўсё, што cs50.h будзе скапіяваць і ўставіць сюды, а таксама
GetInt як і ўсе гэтыя рэчы.
І гэта проста кажа, што GetString ці вяртаць радок.
Вы не ведаеце, як гэта рэалізавана, але калі мы дабяромся да гэтай лініі, у цяперашні час
ён ведае, што правільна вяртае радок.
>> SPEAKER 9: Такім чынам, калі мы не турбаваліся # ўключыць рэч, і замест
проста напісаў прататып для тых, што мы на самай справе збіраемся выкарыстоўваць?
ROB: Так.
Так давайце запусцім гэта.
SPEAKER 9: Што гэта?
Так, па змаўчанні, ён будзе рабіць-л да CS50 толькі таму, што -.
ROB: - выраз.
Алі: Так, таму што, як вы сказалі, гэта ў марку файл.
ROB: cs50.h таксама, здараецца, ЬурейеЕ знак * у радок.
Вы можаце цалкам ігнараваць тое, што гэта азначае, што ў цяперашні час.
Але гэта таксама тое, што ўключана ў cs50.h.
Так што зараз усё працуе выдатна.
Яна працуе сапраўды гэтак жа, як гэта было, калі мы толькі што
# Ўключыць.
І так адбываецца, у тым ліку cs50.h больш-ўключаюць такія рэчы, што вам трэба -
як, вы не выкарыстоўваеце GetInt ў гэтай праграме, але гэта не мае значэння.
Гэта будзе проста ігнараваць яго.
ALI: А потым, калі вы робіце-lcs50 тут і тут, тое, што адбываецца
на тое, што гэта якая мае фактычную рэалізуюцца код.
Дык вось дзе ён на самой справе, рабіць -
напісанне кода для GetString.
Так што гэта не проста абяцанне больш.
Гэта на самай справе перажывае і прымае радок і ўсё такое.
Сэнс?
Пытанні? Добра.
Cool Beans.
>> ROB: Зараз мы можам перайсці да ўласна код.
ALI: Добра.
Так вось першая праблема.
Так ён кажа напісаць праграму, якая запытвае ў карыстальніка малыя
літара, а затым пераўтворыць яго ў верхні рэгістр без выкарыстання пабітава
аперацый, у адпаведнасці з узорам выхаду ніжэй.
Такім чынам, вы бачыце, вы запусціце праграму з. / A.out, і тады вы
збіраюся паставіць у ніжнім рэгістры, а затым ваша праграма павінна выдаць капітал
A. Так чаму б не вы, хлопцы, усе яго застрэлілі на CS50 прасторы?
Так што вы, хлопцы, усё гэта можа пайсці сюды.
І вы можаце выдаліць увесь код тут.
І тады вы можаце пайсці далей і пачаць кадаваньне рэч.
ROB: Вы, верагодна, хочаце выкарыстоўваць GetChar, гэта
ўключаны ў CS50 бібліятэкі.
ALI: Я думаю, было б лепш, калі вы захаваеце верхняй часткі.
Такім чынам, вы можаце проста змяніць рэчы ў сярэдзіну.
Ідзем далей і працаваць.
Не саромейцеся працаваць адзін з адным.
Роб: І вы можаце задаваць пытанні, калі ў вас ёсць -
>> SPEAKER 10: Што такое аперацыя пабітава?
ROB: так, не звяртайце ўвагі, што па гэтай праблеме.
ALI: Калі вы не ведаеце, што гэта добра.
ROB: Мы збіраемся выкарыстоўваць яго ў наступнай праблемай.
Але калі вы не ведаеце, што аператар пабітава у тым, што ўсё ў парадку.
SPEAKER 10: Ці з'яўляецца, што, як ператварыць яго ў ASCII код?
ALI: Няма
ROB: Не.
Вы можаце зрабіць гэта па гэтай праблеме.
SPEAKER 10: Як ты гэта робіш?
Так што, калі б у мяне было дзесьці пісаць -
ALI: Ці нешта пісаць.
ROB: Я мог бы проста нейкая тыпу ў гэтым.
ALI: тып на самым версе.
ROB: О, я сяджу на мікрафон.
>> Такім чынам, мы бачылі ў лекцыі, што ASCII значэнне для сталіцы складае 65 гадоў.
І капіталу B будзе 66, і так далей.
Такім чынам, вы літаральна можаце выкарыстоўваць 'A' для абазначэння ліку 65.
Маўляў, гэта значэнне 65.
Я магу зрабіць нешта накшталт Int х = 100 - 'A'. А зараз х будзе мець значэнне
100 - 65.
ALI: Вы можаце бегчы, што і паказаць, што.
Ну, можа быць, няма.
Нічога.
ROB: Я павінен быў раздрукаваць яго.
SPEAKER 10: Як ператварыць яго назад у характары?
ALI: Так што калі вы не -
Вы проста прымусіць яго быць знак, роўныя.
ROB: Так што ёсць -
Адрозненне паміж сімвалаў і цэлае толькі з пункту гледжання памеру.
Такім чынам, цэлае бывае, каб мець магчымасць прадстаўляць рэчы
на, быццам бы, чатыры мільярды.
Сімвал можа толькі прадстаўляць рэчы аж да 255.
Але няма ніякай розніцы паміж імі, акрамя гэтага.
Такім чынам, можна сказаць, сімвал з = 65.
Гэта раўнасільна таму, сімвал з роўным 'A'.
ALI: О, няма.
Гэта не рэальна зэканоміць рэчы.
ROB: Не, вы не можаце гэтага зрабіць.
ALI: Гэта проста -
[Стогны]
>> ROB: Добра, так што Алі быў проста напісаў праграму, якая спачатку друкуе 100 -
'A' як цэлы лік, якое было 35, як мы чакаем, таму што 100 мінус ASCII
значэнне роўна 65.
Потым раздрукаваць з дапамогай% C, што азначае, інтэрпрэтаваць яго як знак.
Так што 100 - гэта 35.
Інтэрпрэтацыя, што ў якасці сімвала, здараецца, хэш-сімвала.
Калі вы паглядзіце на asciitable.com або любы іншы, вы ўбачыце, што 35 з'яўляецца
хэш-сімвала.
ALI: Добра, любыя іншыя тлумачэнні аб праблеме?
Добра, вы, хлопцы, можаце пайсці далей і зрабіць гэта тады.
Не саромейцеся задаваць пытанні ці размаўляць адзін з адным.
Ці, калі вы ўжо зрабілі, вы можаце расслабіцца.
>> Лукас: Ці з'яўляюцца яны таго ж класа, усе малыя літары ў парадку і
Таксама загалоўнымі таксама ў парадку, таму што гэта нешта карыснае для
праблемы.
ALI: Добры пытанне, Лукас.
Такім чынам, вы, хлопцы, усё гэта ўзяў?
SPEAKER 11: Так.
Вось як вы гэта робіце, ці не так?
ALI: Дакладна.
ROB: Так.
SPEAKER 11: [неразборліва]
ALI: Усе правільна.
ROB: Якое пытанне пытаецеся?
Проста для пераўтварэнні -
ALI: пераўтварэнне ніжняга рэгістра ў верхні рэгістр.
Вось і ўсё.
ROB: Добра.
ALI: Ці павінны мы пісаць?
Я думаю, мы проста глядзім на кагосьці іншага.
ROB: Так што для тых, хто мог бы затрымацца, спосаб -
калі ў мяне ёсць некаторы сімвал з, скажам, гэта адбываецца з літарай D.
Так што цяпер, як я магу высветліць, якія літары алфавіту С?
Ня D, але я маю на ўвазе, D, здараецца, чацвёртая літара алфавіту.
І калі мы пачнем адлік з 0, то гэта трэцяя літара алфавіту.
Так што, калі гэта 0, B = 1, C = 2, D 3, як я магу высветліць, унутр пазіцыі -
якую пазіцыю ў алфавіце C знаходзіцца ў?
У каго-небудзь ёсць ідэі?
Алі: Я думаю, што ўсе яны кадавання.
ROB: А як наконт першага?
SPEAKER 12: Так што гэта, адняць першы?
ROB: Так.
ALI: Так, дзіўны.
Такім чынам, можна зрабіць капітал D -
ой, прабачце.
Вы бераце характар ​​і адняць першую, як вы сказалі.
ROB: D Так што, калі гэта нешта накшталт 68, і мы адымаем, што на 65, то атрымаем
3, кажучы нам, што D з'яўляецца трэцяй літары алфавіту
пачынаючы з 0.
Такім чынам, вы можаце яго выкарыстоўваць.
Цяпер мы ведаем, што літары алфавіту, з пункту гледжання
загалоўныя літары, ці -
мы маглі б зрабіць тое ж самае для малых літар, каб высветліць, што
малыя пазіцыі мы цалі
І мы можам выкарыстоўваць, каб затым пераўтварыць у верхні рэгістр дапамогай
вельмі падобныя ідэі.
Спытаеце прапановы?
>> ALI: Хлопцы, вы - Пачакай, я не ведаю, як далёка вы, хлопцы.
Ці большасць з вас зрабілі, вы ўсё яшчэ працуе, ты затрымаўся?
Вы, хлопцы, можаце крычаць -
затрымаўся.
Адзін чалавек затрымаўся.
Cool.
Я, як правіла, затрымаўся, таксама.
SPEAKER 13: я зрабіў.
ALI: вы зрабілі?
Добра.
Гатова.
SPEAKER 13: [неразборліва]
ALI: Так, выдатна.
Вы правяраеце, што гэта ў ніжнім рэгістры форме?
Добра, халаднавата.
Дзе знаходзяцца іншыя людзі?
Дапамагло Ці гэта намёк дапамагчы вам, як і для не-прыліпанне сябе?
SPEAKER 14: Не зусім, але толькі таму, што я не ведаю, я не
пераварваннем яшчэ.
ALI: Добра, халаднавата.
Вы хочаце паспрабаваць -
ці вы хочаце пайсці і пагаварыць?
>> ROB: Тое, што я збіраюся сказаць, -
так што выкарыстанне гэтага.
Вы разумееце, як мы атрымалі тое, што становішча ў алфавіце
Ліст знаходзіцца ў?
SPEAKER 14: Такім чынам, калі вы паклалі рэчы ў адной цытаце,
, Якая вяртае лік?
ROB: Так.
Яна будзе перакладзеная на ASCII значэнне ён прадстаўляе.
Так што вы хочаце пайсці ў табліцы ASCII або што гэта такое?
ALI: Толькі адзін з іх?
ROB: Так.
Таму, калі вы пакладзеце любой з гэтых знакаў, ігнаруючы шмат -
ALI: [неразборліва]
ROB: Так, з дапамогай курсора.
ALI: Так.
Гэта было захапляльнае.
ROB: Такім чынам, ігнараванне гэтых тыя, злева, якія з'яўляюцца спецыяльнымі знакамі -
калі вы пакладзеце любой з гэтых знакаў у адзінарныя двукоссі, то гэта будзе
пераклад гэтага значэння злева.
ALI: Гэта дзесятковы лік для яго.
Гэта як матчы з 65, B 66, і вы заўважыце, што ўсе яны ў
алфавітным парадку, што робіць розніцу.
Так што, як кажа Роб, і раней, у гэтым кодзе, мы былі вылічэнні адлегласці ад
Першая літара, як такой.
І гэта будзе тое ж самае, будзь то верхні або ніжні рэгістр.
ROB: Такім чынам, калі мы зрабілі D, 68 мінус 65, атрымліваем 3.
Паколькі D складае тры пазіцыі ў алфавіце.
ALI: Такім чынам, як бы вы перавесці, што больш, каб знайсці маленькую D?
ROB: Так.
Так што, калі ў мяне ёсць 3 цяпер, я ведаю, я хачу пайсці на тры літары -
Мы, аказваецца, збіраецца маленькай цяпер, але, скажам, я хачу пайсці 3
пазіцыі ў ніжнім рэгістры бок рэчаў.
Так як я магу гэта зрабіць?
Я ведаю, ніжні рэгістр складае 97.
Так як я магу знайсці тры пазіцыі ў малых літар?
>> SPEAKER 15: У мяне ёсць адно пытанне, на самай справе.
ALI: Так, ісці наперад.
SPEAKER 15: Дык на тое, гэта сапраўды не мае значэння, калі я ведаю, што гэта становішча,
падабаецца, мне не патрэбна гэтая табліца.
ROB: Не.
Вам ніколі не давядзецца выкарыстоўваць любое з гэтых лікаў.
І гэта важны момант у вашай праграме, што вы ніколі не павінны жорстка
код любога з гэтых канстант.
Выкарыстоўвайце 'A'. Ніколі не выкарыстоўвайце 65 ці 97.
ALI: Тыя, хто называюць магіяй лікаў, і яны сапраўды заблытанай.
Маўляў, пры адладцы кода, вы не маглі б успомніць, што
Вы выкарыстоўвалі іх для.
І для нас класіфікацыі кода, мы не ведаем, што
Вы выкарыстоўваеце іх.
Таму лепш, калі вы збіраецеся выкарыстаць знакі, так што робіць
больш сэнсу для людзей.
Добра, любыя іншыя пытанні?
Больш людзей зрабілі, ці -
Я думаю, мы можам праверыць.
Гэта сапраўды жудасна, што вы можаце ўбачыць код людзей.
ROB: Так.
Мы не павінны гэтага рабіць.
Мы не ведаем імёнаў людзей, альбо.
ALI: О, так, добра, што робіць яго лепш, так што мы будзем яшчэ больш бесстаронні
замест таго, каб проста выпадкова выбіраючы кагосьці.
Не хвалюйцеся.
Я не буду гэта рабіць.
Калі ў вас ёсць выпадковыя рэчы, пра - не бяда.
Добра.
Як робяць людзі?
>> SPEAKER 17: Так 9. радку павінна вывесці характар?
ROB: Так.
ALI: Так.
Так што, калі вы ідзяце ўніз -
ROB: Ой, не магу гэтага зрабіць.
ALI: Вы ўбачыце, што ён надрукаваў хэш-сімвала.
SPEAKER 17: О, усё ў парадку.
ROB: Я думаю інакш, Вы можаце глядзець на рэчы мы друку двух
сімвалы.
Спачатку адзін Мы друкуем гэты ліст А.
Наступны Мы друкуем толькі 65.
Гэта, напэўна, крычаць на мяне за гэта.
Таму, калі мы проста запусціць гэта, вы заўважыце, што яна друкуе абодва разы.
Таму што мы просім гэта тое ж самае.
Мы просім яго, каб надрукаваць літару А. І тады мы просім яго, каб друк
№ 65 інтэрпрэтуецца як сімвал, які тое ж самае.
ALI: У вас ёсць што сказаць?
О, я проста жартую, прабачце.
Добра, як людзі -
ROB: Мы можам проста прайсці праз гэта.
>> ALI: Такім чынам, з чаго пачаць?
Любы?
Як намёк, што мы павінны атрымаць нешта ад людзей, ад typers.
SPEAKER 18: [неразборліва]
ALI: Ах ды, хуткі, выдатна.
Такім чынам, мы набяром -
Што мы друкуем?
Любы?
Ці я павінен проста ўвесці яго?
Няўжо мы на самай справе ўвод -
ROB: Вядома.
ALI: Такім чынам, мы набяром Printf каб заахвоціць яго, так што мы можам быць
падабаецца, дай мне знак.
Добра, а што потым?
Чаму яна гэта робіць?
Роб: Я не ведаю.
ALI: Добра.
Так што цяпер, мы гаворым ім, каб даць нам характар.
Але тады як жа вы на самой справе атрымаць гэты знак?
SPEAKER 19: Выкарыстанне GetString.
ALI: GetString?
GetChar?
Добра, так у чым жа розніца паміж радкоў і сімвалаў?
SPEAKER 19: Радкі серыі, як масіў знакаў.
>> ALI: Cool, так.
Так што ў гэтай праблеме, нам трэба толькі разгледзець адзін знак за раз, так што
мы толькі збіраемся рабіць GetChar для гэтага асобніка.
ROB: Мы маглі б рэалізаваць функцыю, калі мы хочам, што ўзяў усю радок
і падышоў радок і ўсё змянілася ніжняга рэгістра ў верхні рэгістр і ўсё
верхняга рэгістра ў ніжні рэгістр.
Але тут, мы проста просім Вас за адзін знак.
Алі: Зараз у нас ёсць характар ​​тут, але тады мы павінны яго захаваць.
І тады мы дадамо сімвал з - што?
SPEAKER 20: Вызначэнне зменных.
ALI: Так, менавіта так.
Так што ў нас ёсць характар.
Роб: Я думаю, што вы маглі б быць -
Вы толькі тры месцы ў, таму ён крычыць на вас.
>> ALI: Добра, прахалодна, цяпер, калі мы табуляцыі мноства, што адбываецца далей?
Які наступны крок?
ROB: Што наша праграма павінна зрабіць, гэта змяніць малой літары, каб
загалоўнай літары.
Што рабіць, калі я выпадкова ўвесці хэш-знакам?
Хіба што -
Алі: Гэта добры знак.
Мы выкарыстоўваем гэта шмат.
ROB: Гэта сапраўды рэч, я магу пераўтварыць у верхні рэгістр форме?
SPEAKER 21: Не.
ALI: Няма
Мы павінны праверыць гэта.
Такім чынам, мы можам мець, калі заява праверку, так што калі з больш
або роўная a'строчная '-
Такім чынам, калі мы паглядзім на графік, можна заўважыць, што яно павінна быць паміж тут,
на 97 і малыя.
І гэта можа быць любы з іх, і з крокам ўвесь шлях ўніз.
А тут яшчэ г на 122.
І яна павінна знаходзіцца паміж гэтымі двума значэннямі.
Ці мае гэта сэнс?
ROB: Дык што, калі з не паміж 97 і 122 -
ці вы ніколі не павінны выкарыстоўваць гэтыя лічбы - калі з не паміж "а" і
'Г', то гэта не з'яўляецца дапушчальным сымбалем для нас у верхні рэгістр.
ALI: Так у кодзе формы, мы кажам, што калі з больш або роўная адной
выпадку маленькай -
нічога сабе, як ты кажаш?
Добра, больш або роўна 'а' у ніжнім рэгістры, і яна павінна быць вышэй
маленькая "г". Такім чынам, яна павінна быць менш або роўная ніжнім рэгістра 'Z'.
Мы робім упэўнены, што гэта паміж імі.
Тады мы можам працягваць з нашай шчаслівай код.
Што?
ROB: Я меркаваў, што мы б проста працягваць пытацца, калі мы, аказваецца, не маюць
малой літары.
ALI: О, я не ведаў пра гэта.
Выбачайце.
>> Такім чынам, калі мы збіраемся рабіць, як кажа Роб, і пераканацца, што -
мы можам працягваць пытацца іх, тое, што мы павінны рабіць?
SPEAKER 22: [неразборліва]
ROB: Так.
Мы павінны выкарыстоўваць свайго роду цыкл.
Паколькі карыстальнік можа ўвесці што-небудзь няправільнае невымоўнае колькасць разоў.
Такім чынам, вы можаце выкарыстоўваць цыкл.
Мэта зрабі той час як цыкл -
літаральна, адзіны раз за ўсё сваё жыццё вы будзеце калі-небудзь выкарыстоўваць рабіць-
у той час як завесы, калі вы просіце для карыстацкага ўводу.
Таму той факт, мы просім для карыстацкага ўводу тут намёк, што мы павінны
выкарыстоўваць DO-цыклу.
І чаму гэта?
Таму што рабіць-пакуль пятля заўсёды адбываецца па крайняй меры, адзін раз.
Таму, калі вы пытаеце, для ўводу дадзеных карыстачом, вы хочаце, каб гэта адбылося па крайняй меры, адзін раз.
І потым, калі ўсё было паспяхова, можна працягваць.
Калі няма, вярнуцца і спытаць яшчэ раз.
>> ALI: Такім чынам, іншымі словамі, мы павінны зрабіць падзел.
І так гэта кажу гэта, каб нешта зрабіць.
Так Printf -
раздрукаваць заявы, запрашэння, а таксама атрымаць сімвал, або спроба
атрымаць характар.
І тады мы павінны праверыць, калі ён сапраўды зрабіў гэта правільна.
Такім чынам, мы дадамо ўмовы, то мы кажам, а потым у нас ёсць
ўмоўны аператар.
ROB: Але цяпер мы змянілі ход думкі.
Цяпер мы першапачаткова казалі, калі з гэтага дыяпазону, гэта справядліва.
Цяпер мы хочам звярнуць назад гэты працэс і казаць, калі з не знаходзіцца ў гэтым дыяпазоне, то мы
неабходна стварыць рэзервовую рабіць рэчы зноў.
ALI: О, так.
ROB: Так што пакуль гэта не так, мы хочам вярнуцца назад і
папрасіць іншага характару.
Ці ўсё бачылі?
Пытанняў з гэтай нагоды?
Добра.
>> Так што цяпер у нас ёсць дзеючы характар, што мы можам верхні рэгістр.
ALI: Такім чынам, што наступным крокам для яго верхні рэгістр?
SPEAKER 23: дадаць 32.
ALI: Вы дадаеце -
Прабачце, што?
SPEAKER 23: Вы не можаце проста дадаць 32?
ROB: Так што так, не з пункту гледжання магіі лікаў.
Вы павінны выкарыстоўваць толькі адзінарныя двукоссі рэчы.
SPEAKER 23: Добра, добра -
Роб: Але вы можаце атрымаць 32 -
ALI: Як Вы атрымаеце нумар 32, я думаю, гэта тое, што мы гаворым.
SPEAKER 23: [неразборліва]
ROB: Такім чынам, мы можам прыдумаць нумар 32 разам -
SPEAKER 23: [неразборліва]?
ROB: Так.
Але калі мы збіраемся рабіць гэта ў два этапы мы рабілі раней з
становішча рэчаў.
Такім чынам, становішча ў алфавіце, што з здараецца, ёсць з мінусам малыя
'А'. Так што, калі мы ўвайшлі ў ніжні рэгістр 'D', пазіцыя будзе 3.
А зараз мы хочам, каб узяць рэчы з вялікай круг рэчаў.
Так што цяпер наш новы C будзе 'A' капіталу плюс становішчы.
Так што людзі бачаць, як гэта падводзіць нас -
Мы рухаемся ад маленькай дыяпазон, дакладную глыбіню, мы былі ў гэты
дыяпазону, і спускаючыся ў верхнім рэгістры дыяпазону, і збіраецца, што далёка
у яе зноў, якая будзе такой жа характар, але цяпер
верхні рэгістр.
ALI: А для людзей, якія былі збітыя з панталыку тым, як ён толькі што сказаў, 32,
у асноўным ён сумяшчаў абедзве гэтыя ў адным заяве.
Такім чынам, эквівалентны спосаб запісу гэтага сказаць, што вы можаце проста выгляд
замяніць пазіцыю, з мінусам ", і паклаў яго прама тут.
Такім чынам, тое, што ён зрабіў, я не -
сімвал newc = вялікія 'A' плюс з мінусам ніжні рэгістр 'A'. І таму, што алгебры,
Вы можаце перамяшчаць іх.
Можна таксама сказаць, што вы можаце перамясціць яго вакол так сімвал newc = вялікія 'A'
мінус ніжні рэгістр 'A' плюс с.
І гэта, вы заўважыце, калі мы вернемся да графіка.
У нас ёсць верхні рэгістр складае 65 і ніжні рэгістр складае 97.
Такім чынам, 65 - 97, -32.
>> Прывітанне.
Сядайце.
Ох.
Вы можаце сядзець прама тут.
Крута, добра, дзіўны.
Сардэчна запрашаем у падзел.
Вы заўважыце, што розніца складае 32.
Дык вось адкуль у яго гэты нумар.
Але гэта не так, як Роб кажа, лепшы спосаб зрабіць гэта, таму што яна мае дзіўнае
Магія блытаніны нумар.
ROB: Вы павінны выкарыстоўваць капітал мінус ніжні рэгістр.
Вы не павінны выкарыстоўваць толькі прамыя 32.
SPEAKER 24: Чаму, што, зноў?
Чаму б вам не выкарыстоўваць 32?
ALI: Калі мы гэта зрабілі, гэта было б сімвал newc = -32 + с.
І калі вы не бачыце ў астатнім, калі гэта ўсё сышло, і вы
проста ўбачыць гэтую адну лінію, то, як вы ведаеце, што 32 з'яўляецца адмоўным?
Гэта проста недарэчна.
ROB: Так што ваша праграма будзе працаваць цалкам нармальна.
Гэта проста стыль рэч.
Хтосьці збіраецца ў і чытанне вашага кода, яны як тое, што робіць 32 маеш на ўвазе?
Можа быць, яны не -
Я, верагодна, не адразу разумееш, што 32 бывае
Розніца паміж малой літары і вялікія літары, хоць
Мы збіраемся выкарыстаць гэты факт у наступнай праблеме.
32, -
Вы можаце пакінуць каментар вышэй кажа 32 з'яўляецца розніца паміж
'A' і '.' Але ў той момант, чаму б не выкарыстоўваць 'A' і 'а', і вы
не маюць патрэбы ў каментары часу.
>> ALI: Гэта проста спосабы над ім шмат чысцей, стыль стрэлкі.
І так, паколькі вы толькі пачынаеце праграмаванне -
ці я думаю, няма, так як вы хакер EDI - не бяда.
Гэта проста добры спосаб ёсць -
лепш мець лепшую стылі.
Гэта прасцей для іншых людзей, каб чытаць.
ROB: Вы ніколі не павінны памятаць табліцу ASCII, ніколі.
Вы проста павінны быць у стане выкарыстаць адну двукоссе.
Пытанні?
ALI: Усё добра?
ROB: Добра.
Так што ў наступны праблема з'яўляецца істотнай.
Такім чынам, наступная задача патрабуе ад нас -
ALI: Наступная праблема не просіць нас зрабіць тое ж самае, але выкарыстаць
Бітаў аператары.
ROB: І, вядома, мы не бачылі бітаў аператары пакуль няма.
Таму мы зараз абмяркуем тыя.
ALI: быць распачатыя.
Яны супер весела.
>> ROB: Так рэгулярных аператараў, такіх як х плюс у, мінус, множанне, дзяленне.
ALI: Калі ласка, увядзіце яго ў гэтым радку.
Роб: Там таксама%, калі вы яшчэ не бачылі яго, якое можна выкарыстаць у
Сімвал адсотка.
Але мы не будзем выкарыстоўваць іх для гэтай праблемы.
Мы хочам выкарыстаць бітаў аператары.
Цяпер памятаеце, мы прывезлі яго ў лекцыі адзін.
Я не ўпэўнены, калі мы абмяркоўвалі двайковай далей.
Але памятайце, што кожнае лік ўяўляецца -
Ну, усё -
прадстаўлена ў 1 і 0 у двайковым выглядзе.
Такім чынам, гэта азначае, што калі я кажу, № 8, я ведаю, што гэта
як, 1000.
Што бітаў аператары паведаміце нам зрабіць, гэта працаваць на гэтых бітаў -
будзе працаваць на гэтых бітаў напрамую.
Цяпер я ўжо не справа ў дачыненні да васьмі.
Я маю справу з пункту гледжання 1000, і я хачу зрабіць нешта з тымі,
асобных бітаў.
Так Алі напісаў бітаў аператары тут, але that's -
Нумар 8, мы будзем выкарыстоўваць як адзін з нашых нумароў прыклад.
А двайковым прадстаўленнем 1000.
Мы будзем выкарыстоўваць іншы нумар, 5 -
на самай справе мы будзем выкарыстоўваць 9 і 5.
І 5 у двайковым прадстаўленні 00 -
0101.
Алі: Ці ўсё добра на гэтым?
Двайковы рэчы?
Менавіта ад першай лекцыі?
>> ROB: Так што нават калі вы не зусім на вяршыні, як пераўтварыць рэчы
двайковы, гэта не зусім важна для гэтай праблемы.
Мы будзем выкарыстоўваць гэта, але вы будзеце мець значна больш шанцаў высветліць, як
хутка змяніць сітуацыю ў двайковы.
Такім чынам, выкарыстоўваючы 9 і 5, зараз у нас ёсць бітавых аператары.
Так, і яшчэ, 9 і 5, калі гэта цэлы лік, то на самай справе гэта 32 біт,
якая азначае, што мы як 0, 0, 0, 0 шмат разоў, то
101 на самага канца.
Гэта проста, таму што, незалежна ад таго, што вы робіце, у цэлых лічбах, 32 біт.
Проста таму, што нам трэба толькі чатыры біта ўяўляюць 9 не значыць, што мы не
з выкарыстаннем да другога 27 біт толькі для 0s.
ALI: Проста каб растлумачыць, адно з гэтых лікаў гэта 0 або 1, няшмат.
Гэта адна 4 біта.
Як жа так Роб сказаў, што машыны захоўваць іх у 32.
Такім чынам, то яны будуць мець 32 альбо 0, альбо 1.
Крута?
ROB: бітаў аператары.
Першае, што мы будзем мець справу з, давайце зробім &.
Так што калі мы робім 9 і 5.
Так што і робіць гэта, па макулінках, ён параўноўвае біты з двух лікаў
і калі абодва ліку роўныя 1, то яна верне 1.
Калі гэта 0, а іншы роўны 1, або абодва 0s, то яна вяртае 0.
Такім чынам, вы можаце думаць пра гэта як лагічныя НСРА.
Як трэба Верны і Праўдзівы, каб вярнуцца дакладна, але праўдзівым і ілжывым з'яўляецца ілжывым.
Так што гэта тое ж самае, але зараз мы маем справу з ёй толькі з бітамі.
>> ALI: Дык што, калі вы паглядзіце на гэта, вы будзеце мець 1 -
Вы выбудаваць іх, так што гэта будзе 1 і 0.
Вы, хлопцы, думаеце, што было б - што б гэта ацаніць, каб?
SPEAKER 25: 1.
ALI: Круто.
Ці не.
Выбачайце.
Так што гэта мае сэнс?
Так што гэта калектыўны адказ зноў?
Выбачайце.
Так што, калі ў нас 1 і 0, тое, што вы атрымліваеце?
ROB: Так вы думаеце, як вы кажаце, і ўслых.
Калі ў вас ёсць два біта х і у, неабходна х і ў роўным 1, для таго,
ацаніць, дакладна - ці для таго, каб яго ацаніць, 1.
Калі х і ў роўныя 0, то яно ацэньваецца як ілжывае або 0.
Лукас: Гэта добра, каб памятаць таксама, што 1 з'яўляецца сапраўдным і 0 няправільна.
Так што калі ў вас ёсць сапраўднае і ілжывае, гэта хлусня.
Але потым, праўда і праўда, праўда.
Ілжывыя і ілжыва, фальшыва.
ALI: у нас ёсць сапраўднае і ілжывае.
Такім чынам, 1 і 0.
Такім чынам, зноў жа, прабачце, яшчэ раз?
SPEAKER 25: Было бы 0.
Так, крута.
І тады мы маем 0 і 1 -
SPEAKER 25: [неразборліва]
ALI: Так.
Такім чынам, вы заўсёды можаце абмяняць іх на -
Тады, калі ў вас ёсць 0 і 0?
SPEAKER 4: 1?
0?
ROB: Так гэта 0.
Гэта не тое, што абодва нумары павінны быць аднолькавымі.
Гэта што абодва нумары павінны быць 1.
ALI: Так як ёсць, каб быць праўдай для таго, каб быць праўдай.
Так што гэта 0.
І тады ў вас ёсць 1% 1, які з'яўляецца?
ROB: Гэта даволі добрыя лічбы.
У іх ёсць усе магчымасці -
ALI: Добрая праца, нічога сабе.
Добра, халаднавата.
Ці так гэта сэнс для ўсіх?
>> ROB: Такім чынам, зараз мы будзем рабіць |.
І гэта будзе вельмі падобна, але зараз замест х і ў якія маюць патрэбу ў
быць 1 для таго, каб ацаніць да аднаго, то гэта проста х ці
У павінна быць 1.
ALI: Так 1 | 0 вылічаецца -
КЛАС: 1.
ALI: Круто.
0 | 1 вылічае -
КЛАС: 1.
ALI: Cool, а затым 0 | 0 -
КЛАС: 0.
Алі: Так, а потым 1 | 1 -
КЛАС: 1.
ALI: Круто.
Дык вось, як дзве бітаў аператары.
Awesome.
ROB: Такім чынам, зараз мы будзем рабіць ^.
ALI: мы павінны зрабіць усё, што ад іх?
ROB: Так, таму што я думаю, што мы збіраемся яго выкарыстоўваць -
выкарыстанне іх усіх.
ALI: Добра.
Так што -
Роб: Я думаю, мы не павінны.
ALI: Так ^ работ у тым, што вы павінны мець роўна адзін праўдзівы і адна хлусня.
^ Ці азначае выключае АБО.
Так што зараз гэта не так -
Калі X і Y роўныя 1, то цяпер ілжывым.
Гэта значыць розніца паміж ^ і |, з'яўляецца тое, што OR, вы можаце мець, калі х
праўда ці ў дакладная, то мы добрыя.
Не, кажа, што калі ^ х, праўда, у павінна быць ілжывым, ці ж гэта не так.
У вас ёсць пытанне?
>> SPEAKER 26: [неразборліва]
ALI: Так.
Гэта збольшага падобна.
ROB: Так, таму, калі вы дабярэцеся да гэтай нізкаўзроўневага рэчы, гэтыя
віды аперацый вы маеце справу з.
На апаратным узроўні, вы будзеце мець справу толькі з бітамі.
Вы не мець справу з лікамі.
ALI: Добра, для ^, або, калі ў вас ёсць 1 = 0, то, што павінна ацаніць, што для?
КЛАС: 1.
ALI: Круто.
Калі ў вас ёсць
0 ^ 1? КЛАС: 1.
ALI: Круто.
0 ^ 0?
Cool.
І тады 1 ^ 1?
КЛАС: 0.
ALI: Cool, дзіўны.
Наступны -
Роб: Я думаю, што гэта ўсё, што мы маем справу з.
Мы будзем рабіць толькі гэта.
ALI: адзіны раз, калі мы павінны рабіць -
ROB: О, гэта будзе ў апошні праблемы.
SPEAKER 27: Пачакайце, яшчэ раз?
ALI: Выбачайце, які быў ваш пытанне?
>> SPEAKER 27: Ці можаце вы растлумачыць, што зноў?
^?
SPEAKER 27: Exclus - так.
ALI: Дык што выключае АБО азначае, што там павінен быць выключна
адно сапраўднае і адно ілжывае, так што 1 і адзін 0, у параўнанні з OR, вы можаце мець -
адна з іх, каб быць праўдай, або абодва з іх можа быць праўдай, таму што
Для ацэнкі да ісціны.
SPEAKER 27: Такім чынам, 0 і 0 было б ілжывым.
ALI: Так.
Але калі ў вас 1 |
1, будзе роўна праўда.
Але калі ў вас ёсць 1 ^ 1, як мы зрабілі, што ХЛУСНЯ.
Таму што гэта не толькі адна праўда.
ROB: І гэта можа ці не можа быць карысным, але звернеце ўвагу, што гэта ^
роўна проста прымаць |
І мінус.
І вы можаце думаць пра гэта такім чынам.
^ Толькі ORing ўсе разам, але, прымаючы любы з бітаў, дзе
як было дакладна.
Так і вяртае ўсе, дзе абодва былі праўдай.
| Вяртае ўсё, дзе адзін або абодва былі праўдай.
Так аднімання з | дае вам ^.
ALI: Ёсць пытанні?
Гэта было шмат інфармацыі.
Усё добра?
>> ROB: Мы можам пайсці па наступным тыя, для наступнай задачы, скараціць
у які час гэта?
Яны не маюць патрэбы ў гэтым да наступнай праблемай.
Алі: Я думаў, што гэта.
ROB: Гэта не так.
Алі: Вы ўпэўнены?
ROB: Так, я ўпэўнены.
Алі: Чаму б нам не пачаць рабіць наступны праблема?
Праблема, зноў жа, змяніць яго з ніжняга рэгістра ў верхні рэгістр, і гэта
час, каб выкарыстоўваць бітаў аператары.
ROB: Такім чынам, мы -
Давайце пачнем з двайковым прадстаўленнем 'A', капітал 'A',
якіх складае 65 гадоў.
Такім чынам, у падвоеным -
так 'A' = 65, які =, у падвоеным -
Я збіраюся сапсаваць лік 0s - то.
ALI: Ці значыць гэта сэнс для ўсіх?
Так, 1, няма 2s, не 4s, не 8s, няма -
не 16, не 32s, а затым адзін 64.
ROB: Так, я думаю, што гэта занадта шмат 0s.
ALI: Выбачайце.
>> ROB: Такім чынам, у нас ёсць 64-мноства, і ў нас ёсць 1 камплект, і аб'яднанне гэтых
разам, атрымліваем 65.
ALI: Cool фасоль?
ROB: Так што цяпер, ніжні рэгістр 'A' -
заўважыў 97 -
У чым розніца паміж 97 і 65?
SPEAKER 28: 32.
ROB: Так.
Так што гэта 32, якая з'яўляецца яго ўласным трохі, так што гэта будзе 110001.
І гэта будзе справядліва для ўсіх магчымых знакаў.
Такім чынам, калі мы думаем пра 'D', які будзе 68, што гэта будзе 1000011.
А потым малыя 'D' будзе 68 плюс 32, што складае 100, якое з'яўляецца
будзе тое ж самае, што гэта было, проста пстрыкаючы
32 раз, таму 1100011.
Такім чынам, розніца паміж вялікімі і малымі літарамі проста гартаць
што 32-бітныя становішча.
SPEAKER 29: Хіба гэта не 1000100?
ROB: Пачакайце, гэта 100 -
тое, што я зрабіў не так.
Гэта было не так.
Я думаў, што гэта была розніца ў 3, так што потым я проста затрымаўся
двайковы 3 у канцы.
Гэта павінна быць у парадку.
ALI: Дзякуй.
Апісанне ўказанне на гэта.
Гэта быў востры.
Усе правы, ясна людзям?
>> ROB: розніца паміж вялікімі і малымі версія
заўсёды проста будзе 32, і таму ён заўсёды будзе адзін біт
, Якая павінна быць перавернутая для пераключэння паміж імі.
ALI: Так што ў гэтым выпадку, ведаючы розніцы паміж сталіцай і
маленькая гэта добра.
Не ў кодзе, але канцэптуальна па крайняй меры, гэта добра.
Такім чынам, вы, хлопцы, можаце ісці наперад і кода, які ў прасторах цяпер.
Ці мы павінны проста абмеркаваць гэта?
ROB: Мы можам проста абмеркаваць гэта.
Я не ведаю.
Вы, хлопцы, можаце паспрабаваць.
Размовы пра сярод сабе на некаторы час.
Мы дамо вам магчымасць кадавання.
[Прамежкавыя VOICES]
ALI: - прахалодна
SPEAKER 30: Гэта як хакер камедыі.
Алі: Так, мы проста кажу навіны, прайшоўшы праз гэта.
>> Роб: І мы вярнуліся.
ALI: Гэта дзіўна.
Я адчуваю, што мы павінны мець CS50 станцыі навіна, і мы маглі
на самай справе сядзяць, як гэта.
ROB: Hacker News.
ALI: Hacker News 50.
ALI: Не саромейцеся задаваць любыя пытанні, калі вы збянтэжаныя.
ROB: Хто-небудзь затрымаліся?
Алі: Так, гэта добрая рэч.
ALI: Пачакайце, вы затрымаліся ў вашым крэсле?
Ох.
Я быў трохі зацікаўлены.
ROB: Таму што я проста зразумеў, што мы збіраемся хочаце
іншы аператар пабітава.
А цяпер давайце проста канвертаваць вялікіх і малых літар.
ALI: На жаль, не ўсё атрымліваюць, што абвяшчэнне?
Мы збіраемся, каб перайсці ад вялікіх і малых літар.
ROB: Тады мы будзем абмяркоўваць ніжняга рэгістра ў верхні адразу пасля гэтага.
О, няма.
У нас ёсць памылка ў гэтым, які, я думаю, мы ніколі не спрабаваў уцячы.
Якія гэта ўсяго толькі сімвал з павінна быць аб'яўлена па-за цыклу, таму што
сфера яго прымянення абмежаваная ў пятлю.
SPEAKER 32: У дадзеным выпадку, гэта няправільна выкарыстоўваць нумар?
ROB: Эх, вам не трэба.
Калі я гарантаваны, што капітал 'A' - ці, ніжні рэгістр "а" мінус капітал 'A'
быў роўна адзін біт, але вы не ведаеце, што гэта 32 -
усё будзе працаваць так жа добра, калі б 16-бітнай, якое было перавернута - ці
Не, я думаю, гэта wouldn't -
або 64 біт былі перавернутыя, магчыма.
Але вы не павінны выкарыстоўваць 32.
Вы маглі б замест гэтага выкарыстоўваць ніжні рэгістр 'A''' мінус капіталу.
>> SPEAKER 32: Добра.
Што вы можаце зрабіць, калі вы адчуваеце, як вы пішаце занадта шмат, што вы можаце вызначыць яго
у верхняй частцы.
Такім чынам, вы можаце быць, як, розніца INT = ніжні рэгістр 'A''' мінус капіталу. І
Затым вы можаце ўвесці розніцу замест гэтага.
Вось у сіле.
Але толькі з дапамогай нумар 32 гэта свайго роду -
SPEAKER 33: Нават калі гэта з-за таго, што гэта 32-разрадная?
ALI: Так.
ROB: Там можа быць -
Адзінай гарантыяй нам трэба зрабіць вам, што розніца паміж
малыя і вялікія з'яўляецца адзін біт.
Гэта не павінна мець значэння, што адбываецца з 32-бітнай які перавярнуўся.
За час меркаванняў, мы пачнем збіраецца з гэтай нагоды.
Нічога страшнага, калі вы яшчэ не скончылі.
Не турбуйцеся пра гэта.
ROB: мяркуецца, што з сабой літары -
Мы не павінны лічыць гэта з вялікай літары.
Мы ведаем, што з з'яўляецца загалоўная літара, пасля гэтага час цыклу -
Зрабі цыклу.
Такім чынам, гэта азначае, што выглядае прыкладна так 'A'. Таму калі мы хочам давесці гэта
'А' да гэтага 'а', што нам трэба рабіць?
Так як жа нам пераўтварыць і перавярнуць крыху?
ALI: Як мы перавярніце яго?
>> ROB: Такім чынам, мы ведаем, што мы хочам, каб перавярнуць 32 біт.
Так што будзем рабіць "а" мінус "А", ці мы маглі б напісаць 32, але -
палкі, гэта наадварот.
ALI: Добра, дык вось гэта Роб разліку гэтага ліку, магічнае лік 32.
Такім чынам, ён высветліць, дзе што трохі фліп вобласці будзе.
А тое, што мы ставім пытанне, дзе знакі?
ROB: Як мы перавернем гэты біт?
З пункту гледжання вялікай літары, гэта 0, і мы хочам стаць 1.
SPEAKER 34: |.
ROB: Так.
Так што гэта нам кажа, што мы ўзяць 'A'. Мы ORing яго з 0 -
1000 -
і што = то.
ALI: Ці мае гэта сэнс для ўсіх?
Мы можам прайсці праз гэта па крупінках, калі хочаце.
SPEAKER 35: Вы [неразборліва]?
ALI: Дзе знакам мінус?
ROB: О, вы маеце на ўвазе тут?
ALI: О, так.
ROB: Я думаю, гэта нам.
Мы маглі б сказаць 32, і цяпер мы проста з дапамогай пабітава аператара.
Алі: Нам не падабаецца магія лікаў.
Мы не збіраемся гэтага рабіць.
Акрамя таго, я думаю, што мы павінны проста выкарыстоўваць аператар пабітава -
SPEAKER 36: Калі вы выкарыстоўваеце ^, вы будзеце атрымліваць 32?
SPEAKER 37: Так, я думаю -
ROB: Так, вы будзеце.
Алі: Гэта, як вы зрабілі б гэта для выезду
ад сталіцы ў ніжні рэгістр.
>> Цяпер любы можа сказаць мне, чаму Роб і я змяніў радок, і як мы пайшлі
з вялікіх малымі, а малыя ў
верхні рэгістр, як мы рабілі раней?
Хто-небудзь ёсць якія-небудзь ідэі, чаму гэта можа быць складаней?
ROB: Дык што мы зробім -
ALI: Так, ісці наперад.
SPEAKER 38: | Аператар было толькі сапраўды добры для дадання.
ALI: Так, менавіта так.
ROB: Такім чынам, што мы хочам зрабіць у ніжняга рэгістра ў верхні выпадку,
пераўтварыць гэта 'а' -
такім чынам, мы хочам пакласці ў некаторых нумарах тут і выкарыстоўваць некаторыя аператара так, каб ён
з да капіталу А. Мы ўсё яшчэ, верагодна, з выкарыстаннем 32 так ці інакш, але цяпер, як мы робім
атрымаць гэта, каб выйсці на гэта?
Такім чынам, з -
ой, я ўсё яшчэ хачу, што занадта -
ALI: Так што цяпер, калі мы пераўтварэння з ніжняга рэгістра ў верхні зноў, то мы
зрабіць ^ аперацыю, як вы, хлопцы сказалі.
ROB: Ёсць і іншыя спосабы вы можаце рабіць рэчы.
Шматлікія аператары пабітава ў канчатковым выніку вельмі лёгка вызначаюцца ў тэрмінах
іншыя аператары пабітава.
Так што я збіраюся, каб не выкарыстоўваць ^ або на ўсіх, але ^ працаваў выдатна.
>> ALI: Добра, мы збіраемся пайсці на апошняй праблемы, якая з'яўляецца асноўным -
Апошняя праблема заключаецца ў пераўтварэнні нешта ў двайковы.
Так, напрыклад, у вас ёсць 50, а затым пераўтварыць яго ў
двайковы, які з'яўляецца 110010.
І я думаю, што вы, хлопцы, усе ведаюць пра бінарных ад лекцыі.
І вы таксама не павінны ставіць любы вядучай 0s ў ёй.
ROB: Вы можаце ігнараваць гэтую частку на дадзены момант.
На першым этапе, вы можаце зрабіць гэта так, каб было вядучым 0s.
І тады мы можам змяніць, што не маюць вядучых 0s, калі ў нас ёсць час.
ALI: Так што не турбуйцеся пра гэта.
Паспрабуйце атрымаць у двайковай сістэме.
Добрае месца для пачатку было б -
ROB: Мы павінны папрасіць цэлае.
ALI: О так, гэта добра.
Мы можам пачаць з гэтага.
Такім чынам, вы можаце змяніць радок.
Такім чынам, замест характар, зараз мы маем справу з цэлымі лікамі.
Крута?
>> ROB: І што цяпер наша зрабі той час як умова будзе?
Ён просіць неадмоўнае цэлае лік.
Алі: Калі мы хочам захаваць з дапамогай якога карыстальнік нешта іншае?
Калі гэта менш, чым 0.
ALI: Дакладна.
ROB: У той час я менш 0.
Алі: Зараз мы хочам, каб пераўтварыць яго.
Вы, хлопцы, ёсць якія-небудзь ідэі, што рабіць?
Любыя намёкі?
Так.
SPEAKER 39: Ці ёсць у нас, каб пераўтварыць яго, ці мы можам проста надрукаваць некаторыя 0 і 1
, Які быў бы правільны нумар?
Не маглі б вы зрабіць для завесы і адлічваць па ступенях 2?
ROB: Так.
Вам не трэба канвертаваць я ў двайковай -
двайковага прадстаўлення я не змяшчаецца ўсярэдзіне я.
Вам проста трэба раздрукаваць двайковага прадстаўлення я.
ALI: Іншымі словамі, вы не павінны ісці па ступенях двойкі.
ROB: Таму што я ўжо захоўваюцца ў выглядзе бінарных файлаў, таму вам не трэба
пераўтварыць яго ў двайковы фармат.
Проста зайдзіце на яго двайковы, і раздрукаваць яго.
І вы будзеце мець патрэбу, каб выкарыстоўваць пабітава, таму што вы хочаце паглядзець на
фактычныя біты.
Вам не трэба выкарыстоўваць пабітава, але, калі ласка.
І гэта на самай справе -
Вы проста можаце зрабіць ступенях двойкі, памножыўшы на 2.
Мы пойдзем па адным з двух апошніх бінарныя аператары пабітава
якія гэтым.
Таму, калі вы бераце -
>> ALI: Ці можаце вы прайсці праз іх абодвух?
ROB: Так.
Такім чынам, давайце з 9.
Такім чынам, 9 зрух налева 1 -
што зрух налева сродкі проста перамясціць ўсе біты налева і ўставіць 0.
Такім чынам, мы рухаемся усё біты ад 9 да левага
становішча, якое дае нам -
Так, заўважце, мы перайшлі ўсе пакінулі аднаго, і ўставіў 0 на
правая бок.
Калі б мы зрушваецца налева на два, мы хацелі б перакласці ўсё пакінулі па два,
і ўстаўце 2 0s, каб запоўніць прабелы.
Пытанне?
ALI: Такім чынам зрух направа робіць падобную рэч.
Калі ў вас ёсць 9 Зрух направа 1, то вы проста рухаюцца усё на
Права, вы губляеце лічбы, такім чынам, 100 замест.
ROB: Такім чынам, вы гэта выдатна, што вы губляеце трохі, што здарылася, усё
да ўпора направа.
Існуюць розныя тыпы правых зрухаў, але ў прынцыпе вы можаце думаць
Зрух направа, як толькі дзяленнем на 2.
І вы можаце думаць аб зрухам налева, як памножыць на 2.
Так што калі вы ператварылі гэты -
Калі перавесці 9 зруху 1, якая роўная 10010, калі вы на самой справе адбылося
праз двайковыя і зразумеў, што гэта было, было б проста 18.
Мы проста памножыць на 2.
1001 левы Shift 2 будзе 36.
Мы памножыць на 4.
Добра, прахалодна, так што гэта зручна аператару пабітава для гэтага.
Больш за блытаніны?
Вы, хлопцы, жадаеце паспрабаваць?
Ці мы можам проста перайсці ў правым і запусціць яго?
ROB: Мы, верагодна, варта перайсці прама цалі
ALI: Так, добра.
Роб: І прайсці праз гэта разам.
>> ALI: Ну, я проста пайду ў яе.
Так што, як ён сказаў у пачатку, што мы збіраемся проста прайсці па крупінках.
Так што мы збіраемся мець патрэбу ў пятлю.
Хто-небудзь ёсць ідэя лепшы выгляд цыклу, каб прайсці праз гэта?
У нас у той час як завесы, зрабі той час як завесы, для завес.
SPEAKER 40: Do-час цыклу?
ROB: Такім чынам, памятаеце, што я казаў пра тое, мы выкарыстоўваем толькі рабіць-а
завесамі, каб атрымаць карыстацкі ўвод.
Вы ніколі не будзеце ў значнай ступені калі-небудзь выкарыстоўваць іх для чаго-небудзь яшчэ.
ALI: Праблема з рабіць-а завес ён робіць нешта, перш чым яна правярае
стане.
Такім чынам, ён можа зрабіць нешта дрэннае -
падабаецца, балюча -
зрабіць тое, што гэта не магчыма.
Такім чынам, вы хочаце праверыць у першую чаргу.
ROB: Там вельмі шмат выпадкаў, калі вы можаце выкарыстоўваць зрабі той час як завесы, але людзі
не чакаю, што вы выкарыстоўваць іх, калі гэта карыстацкі ўвод.
Такім чынам, мы выкарыстоўвалі наш зрабі той час як цыкл, каб атрымаць я.
Колькі раз наш цыкл захоча цыклу?
Мы хочам, каб цыкл па кожнаму з бітаў я.
Колькі бітаў у I?
SPEAKER 41: 32.
ALI: Так.
ROB: Такім чынам, ёсць 32 біт.
Мы не хочам сказаць, 32.
Замест гэтага мы хочам сказаць SizeOf -
якія, вы бачылі, што ў класе яшчэ?
ALI: Не.
ROB: Чаму кажуць, што выкарыстоўваць -
SizeOf (INT) раз 8 -
ALI: Такім чынам, SizeOf ёсць -
>> SPEAKER 42: [неразборліва]
ALI: Цікава.
Такім чынам, SizeOf з'яўляецца ўбудаваны ў C функцыі, дзе яна проста кажа вам,
лік бітаў у -
ROB: Bytes.
ALI: Bytes, выбачайце -
лік байт, зменная для захоўвання значэння.
Так што я думаю, што ён перайшоў у клас, то Int складае 4 байта можа быць.
Крута?
ROB: Але вы не павінны ведаць, што Int складае 4 байта.
Вы павінны быць у стане сказаць -
Вы павінны выкарыстоўваць SizeOf (INT), каб атрымаць 4 байт.
І гэта на самай справе важна для некаторых рэчаў.
Int можа быць не 4 байт.
На іншым кампутары Int можа быць 8 байт.
Так што ваша праграма не будзе працаваць на кампутары, таму што вы жорстка 32
Біты, калі на гэтым кампутары адбываецца з 64 біт.
ALI: Такім чынам, у вас ёсць агульная колькасць бітаў, якія вы хочаце, каб разгарнуцца.
Роб: А розніца паміж байт і біт, што
8 біт у байце.
Такім чынам, SizeOf (INT) вяртае 4 байта, то мы павінны памножыць гэта
на 8, каб атрымаць 32 біт.
>> ALI: Такім чынам, мы ведаем, што максімальныя і мы ведаем, што мы хочам, каб перайсці ад -
Мы хочам, каб прайсці праз усе з іх.
Таму мы хочам, каб перайсці ад 0 да numBits.
Так хто-небудзь ведае, як напісаць цыкл для гэтага?
Любы?
SPEAKER 43: [неразборліва]
ALI: Такім чынам, вы хочаце, каб перасекчы нумар я з нулявога біта
Першы біт, другі біт, трэці біт, усе шляхі да numBits.
Максімальнае колькасць бітаў, якія вы можаце атрымаць.
ROB: Што агульнага цыклу мы выкарыстоўваем тое, што мы хочам зрабіць нешта х раз?
ALI: Для.
Perfect.
Такім чынам, у нас ёсць для.
І тады мы створым итератор, які не збіраецца быць я.
ROB: J.
ALI: J = 0.
Таму мы пачнем з 0.
І тады мы будзем мець ўмова, каб пераканацца, пакуль вы
адбываецца праз яго кожны раз -
[Прамежкавыя VOICES]
ROB: J.
ALI: J менш, чым numBits.
Такім чынам, мы не хочам, каб зрабіць фактычна роўны адзінцы, таму што яны numBits
агульная, і мы пачынаем з 0.
Такім чынам, мы фактычна будзем мець -
SPEAKER 44: Oh.
ALI: індэксы не скончыцца ў numBits мінус 1.
ROB: Занумеруем біты ад 0 да 31, мы не маркіраваць іх ад 1 да 32.
ALI: А потым мы збіраемся павялічваць кожны раз на адзін, таму што мы хочам
праверыць усе да адзінага.
Такім чынам, мы пойдзем J + +.
>> SPEAKER 45: Чаму вы гэта робіце?
SPEAKER 46: Навошта вы едзеце праз кожны біт?
ROB: Таму мы хочам, каб прайсці праз кожны біт і -
Так скажам, у нас ёсць некаторы лік.
ALI: 68.
ROB: Мы можам выкарыстоўваць 68.
Такім чынам, двайковы гэта будзе 100100.
Так што гэта ўнутры мяне, і мы хочам перайсці на кожным з гэтых бітаў.
Гэта 1?
Надрукаваць 1.
Хіба 0?
Надрукаваць 0.
Тады мы ідзем да наступнага няшмат.
Гэта 1?
Надрукаваць 1.
З'яўляецца 0?
Надрукаваць 0.
ALI: Cool, добра.
Цяпер мы знаходзімся на правільным індэкс, дзе гэта біт.
Як мы можам пераканацца, што канкрэтны адзін?
Скажам, мы знаходзімся ў = 0, таму мы хочам, каб праверыць індэксам 0 у біт.
Такім чынам, у дадзеным выпадку, гэта адно.
>> Так што цяпер як жа нам ісці аб праверцы, - о, гэта было б гэтага.
ROB: Так.
ALI: Выбачайце.
Як бы мы ісці аб праверцы, што адна, у сэнсе?
Як бы мы правяраем, калі гэта 0 або 1?
Ну let's -
Клас: А 1?
ALI: І?
Так.
ROB: Так скажам, у нас ужо ёсць 1.
Тады гэта і гэта верне ці гэта 1 або 0.
ALI: Такім чынам, мы можам пайсці ўніз.
І мы можам зрабіць, як вы, хлопцы сказалі, вядзення і функцыі.
ROB: INT -
Як жа я хачу сказаць, што гэта -
Isone = я.
І ў першы трохі, мы, здараецца, гляджу, мы робім я і 1.
Цяпер тое, што мы збіраемся хочуць і на другі біт?
SPEAKER 47: 2.
ROB: Так, другое, што мы знаходзімся на 2.
ALI: Вы заўважыце, што 1 пераехала да левай.
Так мы даведаліся любыя бітаў аператары, каб зрабіць гэтую функцыю?
ROB: наступны -
ALI: Так, дакладна, менавіта так.
Так што гэта зрух налева.
Замест таго, каб заўсёды правяраць з 1, мы збіраемся перавесці яго.
І колькі разоў мы збіраемся перавесці яго?
Калі мы правяраем аднаго нулявога затым мы збіраемся, каб перамясціць яго на нулі.
Так, менавіта так.
Такім чынам, вы пакінулі перакласці яе на J.
Perfect.
Такім чынам, цяпер мы ведаем -
у нас ёсць гэтая Int ад таго, калі гэта 1, а затым -
так Адзежа выгляд падману тут -
І вось цяпер ён ішоў наперадзе і ён проста сказаў, што калі гэта на самай справе 1,
таму што 1 праўдзівы, так што мы не павінны гаварыць ISF Isone роўны 1 -
так што калі Isone, то мы друкуем 1, у адваротным выпадку мы друкуем 0.
>> ROB: Такім чынам, наша праграма мае агульную памылку.
Ну, пытанняў па гэтай першым.
SPEAKER 48: Ці можаце Вы калі-небудзь Isone ў чатыры аперацыі часткі і
часу гэта перакласці сябе як апошняя частка?
Так Isone роўная 1, а затым -
ROB: Так, можна.
Мы можам паказаць, што на самой справе, як толькі мы выправіць памылку, што я збіраюся
абмеркаваць з Вамі ўсё.
Звярніце ўвагу на парадак мы будзем над рэчамі.
Улічваючы гэта бінарнае ўяўленне, мы, пачынаючы з нулявога біта.
Калі гэта 0, то мы друкуем -
Ну, гэта 0, таму мы друкуем 0.
Тады мы ідзем да другой біт.
Гэта 0, таму мы друкуем 0.
Тады мы ідзем да трэцяга няшмат.
Гэта 1, таму мы друкуем 1.
ALI: Так гэта адбываецца ў зваротным кірунку.
Так як жа вы, хлопцы, прапаную выправіць гэта і пайсці іншым шляхам?
SPEAKER 49: [неразборліва]
ROB: Так.
Такім чынам, замест таго, каб ісці ад 0 да numBits, мы пойдзем ад numBits біт у 0.
ALI: Такім чынам, [неразборліва]
заўсёды можна пайсці іншым шляхам.
ROB: NumBits мінус 1, таму што гэта апошні nubmer -
ALI: Таму што гэта ідзе ад 0 да 31.
І тады мы заўсёды пераканайцеся, што яно больш 0, таму вы не ідзяце
занадта далёка направа.
І тады вы заўсёды будзеце адымаць ад 1 да ідзем направа.
>> ROB: Такім чынам, зараз у нас ёсць зваротная пятля, і гэта лік назад у друку
У правільным шляху.
SPEAKER 50: Вам не давядзецца мяняць зрух рэчы таксама?
ALI: Такім чынам, няма.
ROB: Мы робім дакладна такі ж аперацыі, толькі цяпер
ў зваротным парадку.
Такім чынам, замест таго, каб рабіць зрух на numBits мінус 1, каб атрымаць усё гэта
біт, а не рабіць, што ў мінулым, мы проста робім гэта ў першую чаргу.
Па змяненне сюды, мы зваротным парадку ўсе
што адбываецца ўнутры.
Але мы не хочам, каб змяніць тое, што адбываецца ўнутры наогул.
ALI: Ці ёсць у гэтым сэнс?
Апрацоўка?
Такім чынам, хто-небудзь яшчэ ёсць нейкія іншыя канцэптуальныя пытанні?
ALI: Перш чым мы паглыбімся ў яго кропка якой -
ALI: Добра, добра ісці.
Роб: Замест J, каб быць нашым -
замест J, каб заўсёды перамяшчацца па, як адзін левы J змену, я думаю, што
Вы кажаце, як, да J выкарыстоўваць сябе.
Такім чынам, для J -
Я думаю, гэта цяжка - = 1 << 31.
Гэта тое, што я хачу?
Я думаю, што гэта << 31.
J> = 1.
J >>, >> Isone, я і J -
так што цяпер замест выкарыстання -
ALI: Вы пастаянна рухаецца J замест таго,
індэкс, каб праверыць яго.
Гэта не так ужо дрэнна.
Мы выкарыстоўваем падобнага роду логіка.
Так што калі вы вернецеся -
Так, але гэта будзе яго страціць.
Добра, вы толькі збіраецеся набраць яго зноў.
Калі вы заўважылі, што ў нас ёсць 1 << J колькасць разоў, і мы былі
павялічваючы J кожны раз на адзін крок, але на гэты раз замест
яны робяць прырашчэнне J ў верхнім ўнутры цыклу.
Таму замест таго, заўсёды ў руху яго ўніз -
ROB: Самая першая ітэрацыя цыклу, у нас ёсць J 10000.
Наступнай ітэрацыі цыклу складае 01000.
Наступная ітэрацыя ў тым, што.
І 1 проста будзе трымаць распаўсюджваюцца ўніз, пакуль мы патрапілі ў вельмі
канца, дзе цяпер менавіта гэта.
Наступны, 1, будзе адштурхнуўся, і J больш не з'яўляецца больш
менш або роўная 1.
Я мог бы таксама пакласці больш 0, тое ж самае значэнне.
А потым гэта ўсё.
Пытанні?
Так.
>> SPEAKER 51: [неразборліва]
ROB: Дык вось жа, як -
Вы бачылі J + = 3?
Дык гэта ж, як і J = J + 3?
Вы можаце зрабіць гэта практычна для любога аператара ў C. Так J >> = 3
роўна J = J >> 3.
Так што працуе таксама з аператарамі пабітава.
І я не павінна была паставіць 31 тут.
Я павінен быў пакласці numBits - 1.
ALI: Yay, ніякай магіі лікаў.
Добра, гэта 4:00, так што калі вы, хлопцы, павінны пайсці - але ці ёсць у гэтым сэнс?
Як вы, хлопцы, ёсць іншыя пытанні?
ROB: Я таксама збіраюся кінуць у тым, што калі б мы хацелі -
быў ён абмяркоўваў патройны аператар на ўсіх?
ALI: Няма
Гэта нармальна.
ROB: Так што вы можаце глядзець на гэта ў наступны раз.
ALI: Добра, на самай справе?
Цяпер вы проста паказухі.
ROB: Не, зараз it's -
гэта тое, што прымушае людзей зацікаўленых, і цяпер яны пойдуць глядзець у яго.
Дык вось, што робіць тое ж самае, за адзін крок.
Такім чынам, спачатку праверце, значыць, я і J 1?
Гэта праўда?
Калі гэта так, друк 1, іншы, раздрукаваць 0.
Алі: Але рабіць гэта па-іншаму гэта выдатна, як добра.
Ён мае такую ​​ж логіку.
Так што гэта не як адна -
ROB: На дадзены момант, мы можам пазбавіцца ад гэтых фігурныя дужкі, таму што гэта толькі
адзін радок цыклу.
ALI: Добра, ці так гэта сэнс?
Гэта быў выгляд скачка.
Але гэта было толькі часткова сінтаксіс, тым больш.
>> Крута?
Любыя іншыя пытанні?
ROB: Усё ў парадку.
ALI: Добра, халаднавата.
Дзякуй, што прыйшлі да секцыі.