[Powered by Google Translate] [Bunyi STATIK ELEKTRONIK] ROB: Okay, jadi apa yang kita hanya membawa anda ke CS50 kawasan. ALI: Tunggu, tunggu kembali. Selamat datang ke bahagian! ROB: Selamat datang ke bahagian! ALI: Yay! ROB: Supersection! ALI: Saya Ali dan ini adalah Rob. Okay, sekarang kita akan menjelaskan kawasan. ROB: Jadi apa yang kita hanya membawa anda ke CS50 kawasan. Anda akan menggunakan ini banyak dalam seksyen anda semester ini. Pada asasnya, kita sudah mempunyai anda memuat turun perkakas. Dan anda boleh berfikir CS50 Ruang sebagai antara muka web bercakap dengan perkakas bahawa kita mempunyai pada pelayan beberapa tempat. Jadi, anda boleh menjalankan kod anda dalam antara muka ini, dan kita akan lihat bagaimana untuk melakukan perkara-perkara. Anda juga boleh melihat kod orang lain dalam seksyen itu, dan - ALI: Dan kerana beberapa orang telah menemui keluar, anda boleh berbual orang di sebelah. Dan kita semua akan melihat, terlalu, jadi yang menarik. Come on, datang dan duduk. Ambil tempat duduk. ROB: Jadi, seksyen - ALI: Tidak, tidak, anda semua boleh datang. ROB: Seksyen akan menjadi lebih interaktif semester ini. ALI: Oh, dia seperti - Oh. Okay, sejuk. Jadi, jika anda lelaki hanya datang dalam, anda boleh pergi ke pautan ini, jika saya boleh mendapatkan di sana, di sana. Kita tidak boleh benar-benar menulis, kerana tidak ada ruang lembaga, tetapi link ini di sini, pergi ke pada komputer anda, dan anda akan memasuki CS50 Ruang, yang merupakan satu perkara yang agak sejuk. Okay. Adakah anda mempunyai masalah? ROB: Jadi, anda boleh mencari masalah - kita perlu mampu untuk menulis suatu tempat ini. Jadi, jika anda pergi kepada cs50.net/psets dan ini adalah supersection penggodam - dan anda pergi ke Edisi Hacker daripada pset satu, melihat spesifikasi tempat turun pada halaman - ALI: Jadi, pada asasnya, manakala Rob mencari, apa yang kita akan lakukan dalam seksyen hari ini adalah terdapat seksyen masalah - ROB: - lapan halaman. ALI: - dipanggil seksyen masalah - ROB: Seksyen soalan. ALI: Maaf, seksyen soalan. Dan orang-orang adalah apa yang kita akan pergi lebih - mereka adalah apa yang kita akan pergi ke hari ini dalam seksyen. Dan kita akan kod pada CS50 Ruang, dan diharapkan yang akan bekerja. Dan kita hanya boleh bercakap melalui mereka. Dan anda semua boleh bertanya soalan apabila anda rasa - ROB: Jadi ini semakin menjadi perkara biasa dengan kebanyakan psets. Saya fikir dengan yang satu ini, ia mengatakan anda tidak perlu untuk menyerahkan soalan-soalan ini masuk Tetapi idea adalah bahawa soalan-soalan ini diletakkan pada pset, dan anda boleh datang seksyen untuk mempunyai soalan-soalan menjawab. Atau jika anda tidak datang ke bahagian, anda boleh menjawab mereka sendiri atau mendapatkan membantu pada waktu pejabat atau sesuatu. Tetapi ini adalah soalan yang sepatutnya untuk persediaan anda untuk set masalah. Dan pada edisi penggodam, banyak soalan mungkin hanya kira-kira mengembangkan pengetahuan CS semasa anda. ALI: Ya, cukup banyak. Okay, jadi, semua orang di CS50 kawasan? Hi, datang masuk SPEAKER 1: Bolehkah kita melihat URL sekali lagi? Merompak: Ya, ini akan menjadi lebih mudah apabila anda sebenarnya dalam seksyen anda, dan TF anda hanya boleh menghantar e-mel kepada anda URL terlebih dahulu. ALI: Yay, mengambil tempat duduk. Terdapat tempat duduk di sini. Depan tidak begitu buruk. Apa? Jadi, CS50 kawasan, kita mendapat sana. Adakah sesiapa yang mempunyai apa-apa soalan sebelum kita masuk ke dalam - apa? ROB: Tidak walaupun apa-apa kapur. [Didengar] ALI: Maaf. Anda boleh menggunakan kuku anda? Kami berada di dalam bilik yang sangat berteknologi rendah untuk kelas yang sangat berteknologi tinggi. Okay, adalah jenis orang baik? Adakah sesiapa yang mempunyai masih soalan tentang hal itu? Seperti yang saya katakan sebelum ini, kita akan pergi melalui seksyen soalan dalam pset spesifikasi. Jadi, terdapat hanya beberapa masalah yang kita akan kod di CS50 kawasan. Adakah semua orang yang baik? Okay. Baik? ROB: Adakah anda mempunyai komputer riba? ALI: Anda boleh bergaul dengan Lucas. Dia duduk betul-betul di sebelah anda. Masa ikatan. ROB: Jadi, bermula dengan masalah yang pertama? ALI: Ya. Kita boleh mula. Adakah anda mahu saya - Saya boleh pergi. Jadi, kita akan pergi spesifikasi pset. Oh, mengapa ia - ROB: Kawalan. ALI: Okay, jadi kita pergi ke jawapan perkara-perkara ini juga? ROB: Oh, ya. Jadi - ALI: Oh, adakah seluar pendek dibintangi semua orang menonton Rob? Okay, sejuk. ROB: Ya, saya tidak fikir kita semestinya dijangka anda mempunyai melihat ia sebelum datang kepada seksyen ini, tetapi kita boleh membincangkan masalah terlebih dahulu, kerana mereka adalah di bawah seksyen perkara soalan. Jadi jika anda telah tidak menonton, jangan bimbang. Mereka yang mempunyai boleh cuba dan menjawab. Jadi, soalan pertama, apakah pra-pemproses, bagaimana # include berkaitan? Jadi adakah sesiapa yang mempunyai jawapan untuk itu? ALI: Anda lelaki boleh bercakap ia keluar. Pasti, pergi ke hadapan. SPEAKER 2: # include adalah beberapa kod pra-bertulis, dan bukannya menyalin dan menampal dalam program anda, dengan hanya mengatakan termasuk, pra pemproses tahu bahawa ia adalah di sana dan bahawa ia harus menambah dalam lewat atau sebelum apa-apa lagi berlaku. ALI: Ya, hebat. Sejuk. ROB: Jadi apabila anda sebenarnya menyusun program, pra-pemproses ini langkah pertama. Penyusunan berlaku dalam empat langkah besar. Jadi pra-pemproses adalah yang pertama besar, dan ia adalah ini lelaki yang pergi melalui dan kelihatan untuk semua ini simbol hash. Dan mana-mana baris yang bermula dengan hash, pra-pemproses melihat dan melihat jika ia boleh memproses. Jadi # include memberitahu pra-pemproses untuk mencari beberapa cs50.h memfailkan dan hanya salin dan tampal kandungannya ke dalam fail ini. Jadi, anda boleh benar-benar # termasuk apa sahaja yang anda mahu, tetapi ia kebanyakannya akan menjadi H fail. Kami tidak mendapat # define lagi, jadi yang tidak kira. ALI: Ya, kami baik pada yang satu. Adakah sesiapa yang mempunyai apa-apa soalan tentang itu? Adakah kita baik? Soalan seterusnya. SPEAKER 3: Dalam pendek, ada sesuatu tentang c juga.? Apakah yang relevan atau ia tidak relevan? ROB: Mengenai c dengan pemproses pra-.? SPEAKER 3: Yeah, atau adakah saya membuat sesuatu sehingga? ROB: Jadi pendek mungkin telah menunjukkan pra-pemprosesan fail ini dan keluarkan ia kepada yang lain fail c, jadi anda boleh pra-memproses fail ini - apabila anda hanya menjalankan seperti, membuat hello atau hello.c dilafaz, anda melakukan semua kompilasi dalam satu langkah besar. Tetapi jelas anda boleh melakukannya kepada langkah-langkah yang berasingan. Jadi pertama anda boleh pra-memprosesnya. Kemudian anda boleh menyusun, maka anda boleh memasang, dan kemudian anda boleh link. Kita akan sampai kepada orang-orang yang lain. Tetapi pra-pemprosesan, anda jenis proses pra-ia, dan kemudian ia masuk ke dalam fail lain c. Kerana pra-pemprosesan tidak benar-benar mengubah apa-apa. Ia hanya sekumpulan salinan dan menampal. Anda secara manual boleh salin dan tampalkannya sendiri. ALI: Dan untuk menjadi jelas, fail c fail C, jadi ia ditulis dalam kod C. Jadi ia pergi dari kod C dengan kod C. Anda hanya menambah kod lebih dengan pound. ROB: Apabila anda pra diproses, ia masih fail C yang sah. SPEAKER 3: Okay. ALI: Soalan yang baik. Saya suka bahawa. Okay, soalan seterusnya. Apa pengkompil? Sesiapa sahaja? Ya. SPEAKER 4: Ia menukar kod pra-diproses ke perhimpunan. ALI: Perfect. ROB: Ya. ALI: Cool. ROB: Supaya apa pengkompil melakukan khusus apabila kita menggunakan dilafaz. Dalam erti kata yang sangat umum, pengkompil adalah sama seperti mengambil kod dalam satu bahasa dan menjadikan ia ke dalam bahasa lain. Jadi, dalam C - atau, baik, dilafaz mengambil kod yang dalam C dan mengubah ia untuk pemasangan. Dan anda tidak perlu akan dapat memahami perhimpunan pada semua. Tetapi itulah bahasa yang ia menjadikan ia ke dalam. ALI: Okay. Dan kemudian, apa penghimpun? Sesiapa sahaja? SPEAKER 5: [didengar] binari? ALI: Maaf, apa? SPEAKER 5: [didengar] binari? ROB: Ya. ALI: Ya. ROB: Jadi penghimpun - kod perhimpunan adalah benar-benar, benar-benar dekat dengan apa yang komputer anda boleh memahami, tetapi ingat bahawa ia tidak cukup memahami teks yang kod pemasangan. Anda perlu menukar ia ke dalam 1s dan 0s lurus. Ia seperti proses terjemahan langsung. Kami hanya boleh memberikan anda jadual yang memetakan setiap apa arahan pemasangan bermakna. Tetapi penghimpun hanya melakukan terjemahan ini untuk anda. Ia mengubah kod pemasangan ke dalam 1s dan 0s. ALI: Dan kemudian, untuk satu yang terakhir, apakah pemaut satu? Dan bagaimana-lcs50 berkaitan? Sesiapa sahaja? ROB: Ini adalah yang paling sukar dan kurangnya menjelaskan salah dalam video pengkompil. ALI: Adakah sesiapa ingat melihat-lcs50 dalam perintah? SPEAKER 6: Apabila anda pergi untuk membuat. ALI: Ia adalah dalam membuat. Ya, sejuk, okay. Adakah terdapat mana-mana tekaan atau samar-samar - ya, pergi. SPEAKER 7: Saya tidak pasti, kerana pendek anda adalah benar-benar [didengar], tetapi ia sesuatu tentang melakukan fail berasingan dengan setiap perpustakaan dan kemudian meletakkan mereka semua bersama-sama dalam satu perpustakaan? ROB: Ya. Jadi apabila anda mempunyai hello.c, ia adalah satu program yang benar-benar mudah. Anda benar-benar hanya melakukan satu perkara di dalamnya. Tetapi apabila anda mendapatkan ke dalam program lain - dan saya rasa walaupun apabila anda GetString dalam program anda, anda perlu untuk memulakan termasuk fail lain. Jadi perpustakaan CS50 adalah salah satu fail itu di mana kita mempunyai pelaksanaan GetString dan GetInt dan semua perkara. Jadi apa pemaut tidak adalah ia berlaku di sekeliling mencari melalui semua ini fail, melihat di mana fungsi ditakrifkan, memastikan bahawa apabila saya panggil GetString tempat, ia tahu bahawa GetString bermakna bahawa ia adalah GetString alih di perpustakaan CS50. Jadi pemaut hanya mengambil semua fail-fail ini, smesy mereka bersama-sama, dan kini anda mempunyai laksana. Jadi ingat, jika anda menggunakan perpustakaan CS50, anda perlu kedua-dua # Include di atas, dan kemudian juga dalam perintah membuat anda, seperti yang anda berkata, anda perlu mempunyai lcs50. Jadi anda tidak boleh hanya mempunyai satu. Jadi itu hanya sesuatu yang perlu diingat untuk rujukan masa depan. SPEAKER 8: Jadi, mari kita mengatakan terdapat perpustakaan lain, seperti cs51.h, akan kita juga mempunyai untuk menambah lcs51? ROB: Satu-satunya sebab ini lcs50 berfungsi dengan sempurna adalah kerana kita mempunyai set yang di tempat tertentu dalam peralatan anda supaya ia tahu apa -Lcs50 bermakna. Kita hanya boleh memberi anda fail cs50.c, dan kemudian anda boleh mengumpul, berkata Dilafaz hello.c cs50.c, dan kemudian ia akan membuat laku anda dengan meletakkan kedua-dua fail bersama-sama. Ia tahu bahawa-lcs50 bermakna cs50.c lebih dalam direktori beberapa yang kita dinyatakan dalam peralatan anda. Jadi, jika anda mahu cs51.c menjadi specifiable oleh hanya mengatakan lcs51, maka kita juga akan perlu untuk meletakkan ia dalam direktori itu supaya ia tahu di mana untuk mencari ia. ALI: Apakah soalan anda? SPEAKER 7: Kenapa anda perlu untuk menghubungkan CS50 jika - wasn't ia menyalin / ditampal pada langkah pertama apabila anda pra diproses ia? ALI: Adakah anda mahu mengambil ia? ROB: Pasti. Jadi fail cs50.h berasingan dari fail C cs50.c. Pernahkah anda mendapat untuk berfungsi prototaip di dalam kelas? Okay. Jadi, pada asasnya, fail cs50.h hanya akan menyalin dan menampal - ALI: Adakah anda semua tahu apa tandatangan? Okay, supaya cukup banyak, jika anda melihat - ROB: cs50.h Mari kita berpura-pura tidak ada. Sekarang fail ini - anda melakukan GetString = rentetan s. Tetapi apabila kita telah mendapat ke titik ini dalam kod, ia tidak mempunyai idea apa GetString. Ia tahu ia adalah fungsi, kerana anda memanggilnya. Tetapi ia tidak tahu bahawa ia sebenarnya sepatutnya kembali rentetan. Jadi seperti yang saya kata, rentetan s = GetInt, ini tidak masuk akal mana-mana, kerana anda menandatangani integer kepada rentetan. Tetapi ia tidak tahu bahawa GetString tidak masuk akal, kerana ia tidak tahu bahawa GetString mengembalikan rentetan. Jadi apa cs50.h mengatakan sesuatu seperti ini. ALI: Jadi apa Rob sedang menaip adalah, ia adalah satu janji dengan cara yang ia akan mempunyai fungsi ini dipanggil GetString. ROB: Ini adalah semua cs50.h bahawa menyalin dan menampal di sini, serta sebagai GetInt dan semua perkara. Dan ini hanya berkata bahawa GetString tidak mengembalikan rentetan. Anda tidak tahu bagaimana ia dilaksanakan lagi, tetapi apabila kita sampai ke garisan ini, kini ia tahu bahawa ia betul mengembalikan rentetan. SPEAKER 9: Jadi, jika kita tidak peduli dengan perkara yang # include dan sebaliknya hanya menulis prototaip bagi orang-orang bahawa kita sebenarnya akan digunakan? ROB: Ya. Jadi mari kita berjalan ini. SPEAKER 9: Apakah ia? Jadi, secara lalai, ia akan melakukan l-CS50 hanya kerana -. ROB: - ungkapan. ALI: Ya, kerana seperti yang anda katakan, ia adalah dalam fail buatan. ROB: cs50.h juga berlaku untuk menjadi * typedef char kepada rentetan. Anda benar-benar boleh mengabaikan apa yang bermakna buat masa sekarang. Tetapi itu adalah juga sesuatu yang dimasukkan ke dalam cs50.h. Jadi sekarang perkara yang bekerja dengan sempurna halus. Ia berjalan sama kerana ia adalah apabila kita hanya mempunyai # include. Dan sebagainya termasuk cs50.h berlaku termasuk lebih-perkara yang anda perlukan - seperti, anda tidak menggunakan GetInt dalam program ini, tetapi ia tidak mengapa. Ia hanya akan mengabaikan ia. ALI: Dan kemudian apabila anda melakukan lcs50 di sini dan di sini, apa yang berlaku adalah bahawa ia mempunyai kod dilaksanakan sebenar. Jadi itulah di mana ia sebenarnya adalah, melakukan - menulis kod untuk GetString. Jadi ia bukan hanya janji lagi. Ia sebenarnya akan melalui dan mengambil rentetan dan semua barangan itu. Masuk akal? Soalan? Semua hak. Kacang sejuk. ROB: Sekarang kita boleh beralih kepada kod sebenar. ALI: Okay. Jadi di sini adalah masalah pertama. Jadi ia mengatakan menulis program yang meminta pengguna untuk huruf kecil surat dan kemudian menukarkan ia kepada huruf besar tanpa menggunakan bitwise operasi, sebagai setiap output sampel bawah. Jadi anda boleh melihat, anda menjalankan program dengan a.out /, dan kemudian anda akan dimasukkan ke dalam huruf kecil a, dan kemudian program anda perlu memberi modal A. Jadi mengapa tidak anda semua semua memberikan ia satu pukulan pada CS50 Ruang? Jadi kalian semua boleh pergi di sini. Dan anda boleh memadam semua kod di sini. Dan kemudian anda boleh pergi ke hadapan dan mula pengekodan perkara. ROB: Anda mungkin akan mahu menggunakan GetChar, itulah dimasukkan ke dalam perpustakaan CS50. ALI: Saya rasa ia mungkin lebih baik jika anda menyimpan bahagian atas. Jadi anda mungkin mahu untuk hanya menukar barangan di tengah-tengah. Teruskan dan bekerja. Berasa bebas untuk bekerjasama dengan satu sama lain. Merompak: Dan anda boleh bertanya soalan jika anda mempunyai - SPEAKER 10: Apakah operasi bitwise? ROB: Jadi, mengabaikan bahawa untuk masalah ini. ALI: Jika anda tidak tahu, yang baik. ROB: Kami akan menggunakannya dalam masalah seterusnya. Tetapi jika anda tidak tahu apa pengendali bitwise adalah, itulah denda. SPEAKER 10: Apakah yang seperti beralih kepada kod ASCII? ALI: No. ROB: No. Anda boleh berbuat demikian bagi masalah ini. SPEAKER 10: Bagaimana anda berbuat demikian? Jadi, jika hanya saya mempunyai tempat untuk menulis - ALI: Atau sesuatu untuk menulis dengan. ROB: Saya boleh hanya jenis jenis ke dalam ini. ALI: Jenis di atas. ROB: Oh, saya duduk pada mikrofon. Jadi, kita lihat dalam kuliah bahawa nilai ASCII bagi modal adalah 65. Dan modal B akan 66, dan sebagainya. Jadi anda benar-benar boleh menggunakan 'A' bermakna nombor 65. Seperti, ini adalah nilai 65. Saya boleh berbuat sesuatu seperti int x = 100 - 'A'. Dan sekarang x akan mempunyai nilai 100-65. ALI: Anda boleh menjalankan dan menunjukkan bahawa. Oh, mungkin tidak. Jangan sekali-kali fikiran. ROB: Saya terpaksa untuk mencetak. SPEAKER 10: Bagaimana anda menghidupkan ia kembali dengan watak? ALI: Jadi jika anda Don 't - anda hanya memaksa ia menjadi A char bersamaan. ROB: Jadi ada adalah - perbezaan antara char dan integer adalah hanya dari segi saiz. Jadi integer berlaku untuk menjadi mampu untuk mewakili perkara , seperti, empat bilion. Char hanya mampu untuk mewakili perkara sehingga 255. Tetapi tidak ada perbezaan di antara mereka yang lain daripada ini. Jadi, anda boleh mengatakan char c = 65. Itu bersamaan dengan mengatakan char c sama 'A'. ALI: Oh, tidak. Ia sebenarnya tidak menjimatkan perkara. ROB: Tidak, anda tidak boleh berbuat demikian. ALI: Itu hanya - [Mengerang] ROB: Okay, jadi apa yang Ali hanya menulis adalah satu program yang pertama kali mencetak 100 - 'A' sebagai integer, yang adalah 35, seperti yang kita harapkan, kerana 100 tolak ASCII nilai A ialah 65. Kemudian dia dicetak menggunakan% c, yang bermaksud mentafsirkan ia sebagai char. Jadi 100 - 35. Mentafsirkan bahawa sebagai watak yang berlaku sebagai simbol hash. Jika anda melihat di asciitable.com atau apa sahaja, anda akan melihat bahawa 35 adalah simbol hash. ALI: Okay, apa-apa penjelasan lain tentang masalah ini? Baiklah, anda semua boleh pergi ke hadapan dan melakukannya kemudian. Berasa bebas untuk bertanya soalan atau bercakap antara satu sama lain. Atau jika anda sudah selesai, anda boleh berehat. Lucas: Adakah mereka kelas yang sama, semua huruf kecil dalam usaha dan juga huruf besar juga dalam perintah, kerana itulah sesuatu yang berguna untuk masalah. ALI: titik Baik, Lucas. Jadi, adakah anda semua semua mendapat bahawa? SPEAKER 11: Ya. Itulah bagaimana anda melakukannya, betul? ALI: Betul. ROB: Ya. SPEAKER 11: [didengar] ALI: Semua hak. ROB: Apa soalan meminta? Hanya untuk menukar - ALI: Tukar huruf kecil kepada huruf besar. Itu sahaja. ROB: Okay. ALI: Sekiranya kita menulis? Saya rasa kita hanya akan melihat orang lain. ROB: Jadi bagi orang-orang yang mungkin terperangkap, cara - jika saya mempunyai beberapa c char, dan mari kita mengatakan ia berlaku untuk menjadi huruf D. Jadi sekarang bagaimana saya boleh memikirkan apa surat abjad C? Tidak D, tetapi saya maksudkan, D berlaku untuk menjadi huruf keempat abjad. Dan jika kita mula mengira dari 0, maka ia adalah huruf ketiga abjad. Jadi, jika A adalah 0, B adalah 1, C ialah 2, D ialah 3, bagaimana saya boleh memahami kedudukan int - apakah kedudukan abjad C? Adakah sesiapa yang mempunyai apa-apa idea? ALI: Saya fikir mereka semua kod. ROB: Apa kira-kira satu yang pertama? SPEAKER 12: Jadi apa sahaja adalah, tolak yang pertama? ROB: Ya. ALI: Ya, hebat. Jadi anda boleh melakukan modal D - oh, maaf. Anda mengambil watak dan anda tolak yang pertama, seperti yang anda kata. ROB: Jadi jika D adalah sesuatu seperti 68, dan kita menolak A, yang adalah 65, maka kita akan mendapat 3, memberitahu kita bahawa D adalah huruf ketiga abjad bermula dari 0. Jadi anda boleh menggunakannya. Sekarang kita tahu apa surat abjad, dari segi modal surat, atau - kita boleh melakukan perkara yang sama untuk huruf kecil untuk memikirkan apa huruf kecil kedudukan kami masuk Dan kita boleh gunakan bahawa untuk kemudian menukar bahawa untuk huruf besar menggunakan idea yang sangat serupa. Minta cadangan? ALI: Adakah anda semua menunggu, saya tidak tahu sejauh mana anda semua. Adakah kebanyakan anda lakukan, anda masih bekerja, anda terperangkap? Kalian boleh melaungkan - terperangkap. Satu orang terperangkap. Sejuk. Saya cenderung untuk terjebak, terlalu. SPEAKER 13: aku selesai. ALI: Anda lakukan? Okay. Selesai. SPEAKER 13: [didengar] ALI: Ya, sejuk. Adakah anda memeriksa bahawa ia adalah dalam bentuk huruf kecil? Okay, sejuk. Di manakah orang lain? Adakah petunjuk ini membantu anda, seperti untuk un-melekat diri sendiri? SPEAKER 14: Tidak benar-benar, tetapi hanya kerana, saya tidak tahu, saya tidak mencerna lagi. ALI: Okay, sejuk. Adakah anda ingin mencuba - atau adakah anda mahu pergi dan bercakap? ROB: Apa yang saya akan katakan adalah - jadi menggunakan ini. Adakah anda memahami bagaimana kita mendapat apa kedudukan abjad surat itu dalam? SPEAKER 14: Okay, jadi apabila anda meletakkan perkara dalam sebut harga tunggal, yang mengembalikan nombor? ROB: Ya. Ia akan diterjemahkan kepada nilai ASCII ia mewakili. Jadi adakah anda mahu pergi ke jadual ASCII atau apa sahaja ia adalah? ALI: Hanya satu ini? ROB: Ya. Jadi apabila anda meletakkan mana-mana simbol-simbol, mengabaikan banyak - ALI: [didengar] ROB: Oh, menggunakan kursor. ALI: Ya. Itu adalah menarik. ROB: Jadi, mengabaikan orang-orang di sebelah kiri, yang adalah simbol khas - jika anda meletakkan mana-mana simbol-simbol dalam petikan tunggal, maka ia akan menjadi diterjemahkan kepada nilai ini di sebelah kiri. ALI: Ini adalah nombor perpuluhan untuk ia. Ia seperti A perlawanan dengan 65, B kepada 66, dan anda akan melihat bahawa mereka semua dalam abjad, yang membuat perbezaan. Jadi, sebagai Rob mengatakan, sebelum ini, dalam kod itu, kita telah mengira jarak dari surat pertama, per se. Dan yang akan menjadi sama, sama ada ia besar atau huruf kecil. ROB: Jadi, apabila kita melakukan D, 68 tolak A 65,, kita mendapat 3. Kerana D adalah tiga kedudukan ke abjad. ALI: Jadi maka bagaimana anda akan menterjemahkan bahawa lebih untuk mencari d sedikit? ROB: Ya. Jadi jika saya mempunyai 3 sekarang, saya tahu saya mahu pergi tiga huruf ke - kita berlaku akan huruf kecil sekarang, tetapi katakan saya mahu pergi tiga kedudukan ke sebelah huruf kecil perkara. Jadi bagaimana saya boleh berbuat demikian? Saya tahu huruf kecil a adalah 97. Jadi bagaimana saya mencari tiga kedudukan ke huruf kecil? SPEAKER 15: Saya mempunyai satu soalan sebenarnya. ALI: Ya, teruskan. SPEAKER 15: Jadi untuk ini, ia tidak benar-benar perkara jika saya tahu kedudukan ini, suka, saya tidak perlu jadual ini. ROB: Nope. Anda tidak perlu untuk menggunakan mana-mana nombor-nombor ini. Dan ini merupakan satu titik penting dalam program anda bahawa anda harus tidak pernah keras kod sebarang pemalar ini. Gunakan 'A'. tidak pernah menggunakan 65 atau 97. ALI: Mereka dipanggil nombor sihir, dan mereka benar-benar mengelirukan. Seperti, apabila anda debugging kod, anda mungkin tidak ingat apa anda menggunakan mereka untuk. Dan bagi kita penggredan kod anda, kami akan tidak benar-benar tahu apa yang anda menggunakan mereka untuk. Jadi ia adalah lebih baik jika anda sebenarnya menggunakan watak-watak jadi ia membuatkan rasa lebih kepada rakyat. Okay, apa-apa soalan lain? Adakah lebih ramai orang yang dilakukan, atau - Saya rasa kita boleh menyemak. Ia adalah benar-benar menyeramkan yang anda boleh lihat kod rakyat. ROB: Ya. Kita tidak perlu berbuat demikian di sini. Kita tidak tahu nama rakyat, sama ada. ALI: Oh yeah, baik yang menjadikan ia lebih baik, jadi kami akan menjadi lebih tidak berat sebelah bukan hanya secara rawak memilih seseorang. Jangan bimbang. Saya tidak akan melakukannya. Jika anda mempunyai perkara rawak tentang - tidak pernah minda. Okay. Bagaimana orang buat? SPEAKER 17: Jadi garis kesembilan perlu mencetak watak? ROB: Ya. ALI: Ya. Jadi, jika anda pergi ke bawah - ROB: Oh, tidak boleh berbuat demikian. ALI: Anda akan melihat bahawa ia dicetak simbol hash. SPEAKER 17: Oh, okay. ROB: Saya rasa satu lagi cara anda boleh melihat perkara-perkara yang kita sedang mencetak dua aksara. Pertama kita percetakan adalah huruf A. Yang seterusnya kita percetakan adalah hanya 65. Ia mungkin akan menjerit pada saya untuk ini. Jadi, jika kita hanya menjalankan ini, anda akan melihat bahawa ia mencetak kedua-dua A kali. Kerana kita meminta perkara yang sama. Kami meminta ia untuk mencetak huruf A. Dan kemudian kita meminta ia untuk mencetak dari 65 ditafsirkan sebagai watak, yang merupakan perkara yang sama. ALI: Adakah anda mempunyai sesuatu untuk mengatakan? Oh, hanya bergurau, maaf. Baiklah, bagaimana orang - ROB: Kami hanya boleh berjalan melaluinya. ALI: Okay, jadi bagaimana anda memulakan? Sesiapa sahaja? Sebagai petunjuk, kita perlu untuk mendapatkan sesuatu daripada orang ramai, dari typers. SPEAKER 18: [didengar] ALI: Oh yeah, segera, sempurna. Jadi kita akan menaip - apa yang kita menaip? Sesiapa sahaja? Atau patut saya hanya menaip? Adakah kita sebenarnya menaip - ROB: Pasti. ALI: Jadi kita akan menaip printf segera, jadi kita boleh suka, memberikan saya watak. Okay, dan kemudian apa? Mengapa ia berbuat demikian? ROB: Saya tidak tahu. ALI: Okay. Jadi sekarang, kita memberitahu mereka untuk memberikan kita watak. Tetapi kemudian bagaimana anda sebenarnya mendapat watak yang? SPEAKER 19: Guna GetString. ALI: GetString? GetChar? Okay, jadi apa perbezaan antara rentetan dan char? SPEAKER 19: Rentetan siri, seperti pelbagai watak. ALI: Cool, yeah. Jadi dalam masalah ini, kita hanya perlu untuk mempertimbangkan satu aksara pada satu masa, jadi kita hanya akan melakukan GetChar misalnya itu. ROB: Kita boleh melaksanakan fungsi jika kita mahu mengambil rentetan keseluruhan dan pergi ke tali dan menukar semua huruf kecil ke huruf besar dan semua huruf besar kepada huruf kecil. Tetapi di sini, kami hanya meminta anda untuk satu watak. ALI: Jadi sekarang kita mempunyai watak di sini, tetapi kemudian kita perlu untuk menyelamatkan ia. Jadi maka kita akan menambah c char - apa? SPEAKER 20: Tentukan pembolehubah. ALI: Ya, sebenarnya. Jadi kita mempunyai watak kami. ROB: Saya fikir anda mungkin - anda hanya tiga ruang dalam, itulah sebabnya ia menjerit pada anda. ALI: Okay, sejuk, sekarang bahawa kita telah tabbing set, apa yang berlaku seterusnya? Apa langkah seterusnya? ROB: Apa program kami harus lakukan adalah menukar huruf kecil kepada huruf besar huruf. Bagaimana jika saya berlaku untuk memasuki simbol hash? Adakah itu - ALI: Ia adalah simbol yang baik. Kami menggunakan ia banyak. ROB: Adakah itu satu perkara yang sah saya boleh menukar kepada bentuk huruf besar? SPEAKER 21: No. ALI: No. Kita harus pastikan bahawa. Supaya kita boleh mempunyai jika pernyataan memeriksa jadi jika c adalah lebih besar daripada atau sama A'huruf kecil '- jadi jika kita melihat carta, anda akan melihat bahawa ia telah menjadi antara sini, pada 97, dan huruf kecil a. Dan ia boleh mana-mana, dan secara berperingkat sepanjang jalan ke bawah. Dan kemudian ada z pada 122. Dan ia telah jatuh di antara kedua-dua nilai. Adakah yang masuk akal? ROB: Jadi jika c tidak adalah antara 97 dan 122 - atau anda tidak perlu perlu menggunakan nombor-nombor - jika c tidak adalah antara 'a' dan 'Z,' maka ia bukan aksara yang sah untuk kita kepada huruf besar. ALI: Jadi dalam bentuk kod, kita katakan bahawa jika c adalah lebih besar daripada atau sama dengan tunggal huruf kecil kes - wow, bagaimana adakah anda mengatakan bahawa? Okay, adalah lebih besar atau sama dengan huruf kecil 'a', dan ia telah berada di atas huruf kecil 'z'. Jadi ia telah menjadi kurang daripada atau sama dengan huruf kecil 'z'. Kami membuat pasti ia antara kedua-dua. Kemudian kita boleh meneruskan dengan kod gembira kami. Apa? ROB: Jadi saya beranggapan kita hanya akan terus bertanya, jika kita berlaku untuk tidak mempunyai huruf kecil huruf. ALI: Oh, saya tidak sedar bahawa. Maaf. Okay, jadi jika kita hendak lakukan sebagai Rob berkata, dan memastikan bahawa - kita boleh terus bertanya mereka, maka apa yang kita harus lakukan? SPEAKER 22: [didengar] ROB: Ya. Kita perlu menggunakan beberapa jenis gelung. Kerana pengguna boleh memasukkan sesuatu yang tidak sah jumlah terperi kali. Jadi anda boleh menggunakan gelung sementara. Tujuan gelung do sementara - secara literal, masa sahaja dalam kehidupan keseluruhan anda anda pernah akan menggunakan do- manakala gelung adalah apabila anda meminta input pengguna. Jadi hakikat kita sedang meminta input pengguna di sini adalah satu petunjuk bahawa kita harus menggunakan gelung do sementara. Dan mengapa? Kerana do-gelung while sentiasa berlaku sekurang-kurangnya sekali. Jadi, apabila anda meminta input pengguna, anda mahu itu berlaku sekurang-kurangnya sekali. Dan kemudian jika perkara itu berjaya, anda boleh terus pergi. Jika tidak, kembali dan bertanya lagi. ALI: Jadi dalam erti kata lain, kita perlu untuk melakukan seksyen. Dan sebagainya ini memberitahu ia untuk melakukan sesuatu. Jadi printf - mencetak penyata, segera, dan juga mendapatkan watak, atau cubaan untuk mendapatkan watak. Dan kemudian kita perlu untuk memeriksa jika ia benar-benar melakukannya betul. Jadi maka kita menambah syarat-syarat, maka kita katakan sementara, dan maka kita mempunyai penyataan bersyarat. ROB: Tetapi sekarang kita telah diterbalikkan melatih pemikiran. Sekarang kita asalnya telah mengatakan jika c ialah dalam julat ini, ia adalah sah. Sekarang kita ingin untuk mengubah itu dan berkata jika c tidak adalah dalam julat ini, maka kita perlu kembali untuk melakukan perkara-perkara lagi. ALI: Oh, ya. ROB: Jadi selama ini tidak benar, kita mahu untuk kembali dan meminta watak lain. Adakah semua orang melihat bahawa? Soalan mengenai perkara ini? Okay. Jadi sekarang kita mempunyai watak yang sah bahawa kita boleh huruf besar. ALI: Jadi maka apa langkah seterusnya untuk uppercasing ia? SPEAKER 23: Tambah 32. ALI: Anda menambah - maaf, apa? SPEAKER 23: Bolehkah tidak anda hanya menambah 32? ROB: Jadi ya, tidak dari segi nombor sihir. Anda hanya perlu menggunakan barangan tunggal quote. SPEAKER 23: Okay, baik - Merompak: Tetapi anda boleh mendapatkan 32 - ALI: Bagaimana anda mendapat nombor 32, saya rasa, apa yang kita katakan. SPEAKER 23: [didengar] ROB: Jadi kita boleh datang dengan bilangan 32 bersama-sama - SPEAKER 23: [didengar]? ROB: Ya. Tetapi jika kita pergi untuk melakukannya dalam dua langkah yang kita lakukan sebelum ini dengan barangan kedudukan. Jadi kedudukan dalam abjad yang berlaku untuk menjadi c c tolak huruf kecil 'A'. Jadi, jika kita memasuki huruf kecil 'd', kedudukan akan menjadi 3. Dan sekarang kita mahu mengambil perkara untuk julat huruf besar perkara. Jadi sekarang c baru kami akan menjadi kedudukan 'A' tambah modal. Jadi jangan orang melihat bagaimana yang membawa kita - kita sedang bergerak dari pelbagai huruf kecil, kedalaman sebenar kita ke pelbagai, dan akan turun ke dalam julat huruf besar, dan pergi yang jauh ke dalamnya lagi, yang akan menjadi watak yang sama, tetapi kini uppercased. ALI: Dan bagi orang-orang yang keliru dengan bagaimana dia hanya berkata 32, pada dasarnya dia menggabungkan kedua-dua ini ke dalam satu kenyataan. Jadi cara yang bersamaan menulis ini untuk mengatakan anda boleh hanya jenis kedudukan pengganti, c tolak ',' dan meletakkan ia di sini. Jadi apa yang dia lakukan, saya Don 't - char NEWC = huruf besar c plus 'A' tolak huruf kecil 'a'. Dan kerana algebra, anda boleh bergerak mereka di sekitar. Anda juga boleh mengatakan bahawa anda boleh bergerak di sekeliling begitu char NEWC = huruf besar 'A' tolak huruf kecil 'a' plus c. Dan ini, anda akan notis jika kita kembali kepada carta. Kami mempunyai huruf besar A ialah 65 dan huruf kecil a adalah 97. Jadi 65-97 adalah -32. Hi. Ambil tempat duduk. Oh. Anda boleh duduk di sini. Sejuk, okay, hebat. Selamat datang ke bahagian. Anda akan melihat bahawa perbezaan ialah 32. Jadi itulah di mana beliau mendapat nombor itu. Tetapi ia tidak, sebagai Rob berkata, cara terbaik untuk melakukannya, kerana ia mempunyai pelik kekeliruan nombor yang sihir. ROB: Anda perlu menggunakan modal tolak huruf kecil a. Anda tidak perlu menggunakan hanya lurus 32. SPEAKER 24: Mengapa, sekali lagi? Mengapa anda tidak menggunakan 32? ALI: Jika kita lakukan, ia akan menjadi char NEWC = -32 + c. Dan jika anda tidak melihat mana-mana sepanjang ia, jika ini semua ini tiada, dan anda hanya melihat ini selaras tunggal, maka bagaimana anda tahu apa 32 negatif? Ia hanya keluar dari tempat. ROB: Jadi program anda akan bekerja benar-benar halus. Ia hanya satu perkara yang gaya. Seseorang masuk dan membaca kod anda, mereka seperti apakah 32 bermakna? Mungkin mereka Don 't - Saya mungkin tidak akan segera menyedari bahawa 32 berlaku untuk menjadi perbezaan antara huruf kecil dan huruf besar, walaupun kita akan menggunakan hakikat bahawa dalam masalah seterusnya. 32 ialah - anda boleh meninggalkan komen atas ia mengatakan 32 adalah perbezaan di antara 'A' dan 'a'. Tetapi pada ketika itu, mengapa tidak hanya menggunakan 'A' dan '', dan anda tidak perlu komen kemudian. ALI: Ia hanya cara di atas adalah pembersih banyak, gaya-bijak. Dan sebagainya, kerana anda baru bermula pengaturcaraan - atau saya tidak rasa, kerana anda EDI penggodam - tidak pernah minda. Ia hanya satu cara yang baik untuk mempunyai - ia adalah lebih baik untuk mempunyai gaya yang lebih baik. Ia adalah lebih mudah bagi orang lain untuk membaca. ROB: Anda tidak perlu perlu ingat jadual ASCII, pernah. Anda hanya perlu dapat menggunakan watak-watak quote tunggal. Soalan? ALI: Setiap orang yang baik? ROB: Okay. Jadi masalah seterusnya adalah besar. Jadi masalah seterusnya meminta kita - ALI: Masalah seterusnya meminta kita untuk melakukan perkara yang sama tetapi untuk menggunakan bitwise pengendali. ROB: Dan sudah tentu, kita telah tidak dilihat pengendali bitwise lagi. Jadi sekarang kita akan membincangkan mereka. ALI: Akan teruja. Mereka menyeronokkan super. ROB: Jadi pengendali tetap, seperti x campur y, tolak, kali, jurang. ALI: Taip dalam ini segera. Merompak: Terdapat juga%, jika anda tidak pernah melihat ia, yang anda boleh gunakan oleh peratus simbol. Tetapi kita tidak akan menggunakan mereka untuk masalah ini. Kami mahu menggunakan pengendali bitwise. Sekarang ingat, kita membawa ia sehingga dalam satu kuliah. Saya tidak pasti jika kita telah dibincangkan binari lebih dari itu. Tetapi ingat bahawa setiap nombor tunggal diwakili - baik, segala-galanya - diwakili dalam 1s dan 0s dalam perduaan. Supaya bermakna bahawa apabila saya mengatakan bilangan 8, saya berlaku untuk mengetahui bahawa itu seperti, 1000. Pengendali bitwise Apa marilah kita lakukan adalah beroperasi atas bit - beroperasi pada bit ini terus. Kini saya tidak lagi berurusan dalam segi lapan. Saya berurusan dari segi sebanyak 1000, dan saya mahu melakukan perkara-perkara bersama-sama orang-orang bit individu. Jadi Ali telah ditulis pengendali bitwise di sini, tetapi that's - Bilangan 8 kita akan digunakan sebagai satu nombor contoh kami. Dan perwakilan binari adalah 1000. Kami akan menggunakan nombor lain, 5 - sebenarnya mari kita gunakan 9 dan 5. Dan perwakilan binari 5 dengan 00 - 0101. ALI: Apakah semua orang yang baik pada itu? Barangan binari? Ia adalah dari kuliah pertama? ROB: Jadi, walaupun anda tidak sepenuhnya di atas bagaimana untuk menukar perkara yang perlu perduaan, yang tidak sepenuhnya penting bagi masalah ini. Kami akan menggunakan ia, tetapi anda akan mempunyai lebih banyak peluang untuk memikirkan bagaimana untuk cepat mengubah keadaan ke binari. Jadi menggunakan 9 dan 5, sekarang kita mempunyai pengendali bitwise kami. Oh, dan juga, 9 dan 5, jika ia integer, maka benar-benar ia adalah 32 bit, yang bermakna kita mempunyai seperti 0, 0, 0, 0 banyak kali, maka 101 pada akhir sangat. Itu hanya kerana, tidak kira apa yang kamu lakukan, dalam integer, 32-bit. Hanya kerana kita hanya perlu empat bit untuk mewakili 9 tidak bermakna kita tidak menggunakan lain 27 bit hanya 0. ALI: Hanya untuk menjelaskan, salah satu daripada nombor-nombor yang adalah 0 atau 1 adalah sedikit. Satu ini adalah 4 bit. Sebagaimana Rob berkata bahawa mesin menyimpan mereka dalam 32. Jadi maka mereka akan mempunyai 32 sama ada 0 atau 1. Sejuk? ROB: bitwise pengendali. Yang pertama yang kita akan berurusan dengan, mari kita buat &. Jadi, jika kita lakukan 9 & 5. Jadi apa & tidak, sedikit demi sedikit, ia membandingkan bit dua nombor dan jika kedua-dua nombor adalah 1, maka ia akan kembali 1. Jika seseorang adalah 0 dan yang lain adalah 1, atau kedua-duanya adalah 0, maka ia mengembalikan 0. Jadi, anda boleh berfikir ia sebagai AND logik anda. Seperti anda perlu benar dan benar untuk kembali benar, tetapi yang benar dan palsu adalah palsu. Jadi ia adalah perkara yang sama, tetapi sekarang kita sedang berurusan dengan ia dengan hanya bit. ALI: Jadi jika anda melihat ini, anda akan mempunyai 1 - anda akan beratur mereka, jadi ia akan menjadi 1 dan 0. Adakah anda semua berfikir bahawa akan menjadi - apa yang akan menilai? SPEAKER 25: 1. ALI: Cool. Atau tidak. Maaf. Begitu juga yang masuk akal? Jadi apakah jawapan kolektif lagi? Maaf. Jadi, jika kita mempunyai 1 dan 0, maka apa yang anda dapat? ROB: Jadi anda berfikir bagaimana anda katakan dan keluar kuat. Jika anda mempunyai dua bit, x dan y, anda perlu x dan y menjadi 1 supaya ia untuk menilai benar atau, dalam usaha untuk ia untuk menilai kepada 1. Jika x atau y 0, maka ia menilai ke palsu atau 0. Lucas: Ia baik untuk ingat juga bahawa 1 adalah benar dan 0 adalah palsu. Jadi jika anda mempunyai benar dan palsu, ia adalah palsu. Tetapi kemudian, benar dan benar, benar. Palsu & palsu, palsu. ALI: Kami mempunyai benar & palsu. Jadi 1 dan 0. Jadi sekali lagi, maaf, sekali lagi? SPEAKER 25: Ia akan menjadi 0. Ya, sejuk. Dan kemudian kita mempunyai 0 & 1 - SPEAKER 25: [didengar] ALI: Ya. Jadi, anda sentiasa boleh menukar mereka - Kemudian jika anda mempunyai 0 dan 0? SPEAKER 4: 1? 0? ROB: Jadi ia adalah 0. Ia tidak bahawa kedua-dua nombor mempunyai untuk menjadi sama. Ia adalah bahawa kedua-dua nombor perlu 1. ALI: Jadi kedua-dua perlu benar ia adalah benar. Jadi itulah 0. Dan kemudian anda mempunyai 1% 1, iaitu? ROB: Ini adalah nombor yang cukup baik. Mereka mempunyai semua mungkin - ALI: kerja Baik, wow. Okay, sejuk. Begitu juga yang masuk akal untuk semua orang? ROB: Jadi sekarang kita akan melakukan |. Dan ini akan menjadi sangat serupa, tetapi kini bukannya x dan y perlu menjadi 1 dalam usaha untuk ia untuk menilai kepada satu, kini ia hanya x atau y perlu menjadi 1. ALI: Jadi 1 | 0 menilai - KELAS: 1. ALI: Cool. 0 | 1 menilai - KELAS: 1. ALI: Cool, dan kemudian 0 | 0 - KELAS: 0. ALI: Ya, dan kemudian 1 | 1 - KELAS: 1. ALI: Cool. Jadi itulah seperti dua bitwise pengendali. Menggerunkan. ROB: Jadi sekarang kita akan lakukan ^. ALI: Sekiranya kita melakukan semua daripada mereka? ROB: Ya, kerana saya fikir kita akan menggunakannya - menggunakan mereka semua. ALI: Okay. Jadi - ROB: Saya rasa kita tidak perlu. ALI: Jadi ^ kerja-kerja yang anda perlu mempunyai betul-betul satu benar dan yang palsu. ^ Bermakna eksklusif ATAU. Jadi sekarang ia tidak - jika x dan y adalah 1 kedua-dua, kini ia palsu. Itu adalah perbezaan antara ^ dan |, adalah bahawa ATAU, anda boleh mempunyai, jika x ialah benar atau y adalah benar, maka kami baik. Tidak, ^ mengatakan jika x adalah benar, y mesti palsu, atau lain ia tidak benar. Adakah anda mempunyai soalan? SPEAKER 26: [didengar] ALI: Ya. Ia adalah jenis yang sama. ROB: Ya, jadi apabila anda mendapat bahawa barangan perkakasan tahap rendah, ini adalah jenis operasi anda berurusan dengan. Pada peringkat perkakasan, anda hanya akan berurusan dengan bit. Anda tidak berurusan dengan nombor. ALI: Okay, ^, atau jika anda mempunyai 1 ^ 0, apa yang perlu menilai? KELAS: 1. ALI: Cool. Jika anda mempunyai 0 ^ 1? KELAS: 1. ALI: Cool. 0 ^ 0? Sejuk. Dan kemudian 1 ^ 1? KELAS: 0. ALI: Cool, hebat. Yang seterusnya - ROB: Saya fikir ini adalah semua yang kita perlu berurusan dengan. Kami hanya akan melakukan ini. ALI: Satu-satunya masa kita akan perlu lakukan - ROB: Oh, yang akan menjadi bagi masalah terakhir. SPEAKER 27: Tunggu, sekali lagi? ALI: Maaf, apa soalan anda? SPEAKER 27: Bolehkah anda menjelaskan bahawa sekali lagi? ^? SPEAKER 27: Exclus - yeah. ALI: Jadi apa yang adalah eksklusif ATAU bermakna bahawa perlu ada eksklusif satu yang benar dan satu palsu, jadi satu 1 dan satu 0, berbanding dengan ATAU, anda boleh mempunyai - salah seorang daripada mereka untuk menjadi kenyataan, atau kedua-duanya boleh menjadi benar, kerana ia untuk menilai kepada true. SPEAKER 27: Jadi 0 dan 0 akan menjadi palsu. ALI: Ya. Tetapi jika anda mempunyai 1 | 1, yang akan menilai benar. Tetapi jika anda mempunyai 1 ^ 1, seperti yang kita lakukan, yang menilai palsu. Kerana ia bukan semata-mata seseorang itu adalah benar. ROB: Dan ini mungkin atau tidak mungkin membantu, tetapi notis bahawa adalah ^ bersamaan dengan hanya mengambil keluar | tolak & Dan anda sebenarnya boleh berfikir ia cara ini. ^ Hanya ORing semua bersama-sama tetapi mengambil keluar mana-mana bit di mana kedua-duanya adalah benar. Jadi & mengembalikan segala-galanya di mana kedua-duanya adalah benar. | Mengembalikan segala-galanya di mana satu atau kedua-duanya adalah benar. Jadi menolak bahawa dari | memberikan anda ^. ALI: Sebarang soalan? Ini adalah banyak maklumat. Setiap orang yang baik? ROB: Kita boleh pergi ke atas orang-orang yang datang untuk masalah seterusnya, mengurangkan apa masa ia? Mereka tidak perlu ini sehingga masalah seterusnya. ALI: Saya fikir ia adalah satu ini. ROB: Ia tidak. ALI: Adakah anda pasti? ROB: Ya, saya positif. ALI: Mengapa tidak kita mula melakukan masalah seterusnya? Masalahnya ialah, sekali lagi, untuk menukar daripada huruf kecil kepada huruf besar, dan ini masa menggunakan pengendali bitwise. ROB: Jadi kita akan - mari kita mulakan dengan perwakilan perduaan 'A', modal 'A', yang ialah 65. Jadi dalam binari - jadi 'A' = 65, yang =, dalam binari - Saya akan kucar-kacir sehingga bilangan 0 -. ALI: Jadi adakah itu masuk akal untuk semua orang? Jadi, 1, tidak 2s, tiada 4s, 8s tiada, tiada - tiada 16, 32S tidak, dan kemudian satu 64. ROB: Ya, saya fikir itulah salah 0s terlalu banyak. ALI: Maaf. ROB: Okay, jadi kita mempunyai set 64, dan kita mempunyai set 1, dan menggabungkan mereka bersama-sama, kita akan mendapat 65. ALI: kacang Cool? ROB: Jadi sekarang, huruf kecil 'A'- notis 97 - apakah perbezaan di antara 97 dan 65? SPEAKER 28: 32. ROB: Ya. Jadi ia adalah 32, yang agak sendiri, supaya akan menjadi 110001. Dan ini akan menjadi benar untuk semua watak-watak yang mungkin. Jadi, jika kita berfikir 'D', yang akan menjadi 68, yang akan menjadi 1000011. Dan kemudian huruf kecil 'd' akan menjadi 68 ditambah 32, yang 100, yang merupakan akan menjadi perkara yang sama bahawa ini adalah, hanya Melibas 32 lagi, jadi 1100011. Jadi perbezaan antara huruf besar dan huruf kecil hanya Melibas bahawa kedudukan 32-bit. SPEAKER 29: Adakah ia tidak 1000100? ROB: Tunggu, ianya adalah 100 - sesuatu yang saya lakukan salah. Ini tidak benar. Saya berfikir bahawa ia adalah satu perbezaan 3, jadi maka saya hanya terperangkap binari 3 di akhir. Ini harus menjadi betul. ALI: Terima kasih. Baik untuk menunjuk yang keluar. Itu adalah tajam. Baiklah, yang jelas kepada rakyat? ROB: perbezaan antara versi huruf besar dan huruf kecil sentiasa hanya akan menjadi 32, dan jadi ia sentiasa akan menjadi sedikit tunggal yang perlu dibalik untuk menukar antara kedua-dua. ALI: Jadi dalam hal itu, mengetahui perbezaan antara modal dan yang kecil adalah satu perkara yang baik. Bukan dalam kod anda, tetapi konsep sekurang-kurangnya, ia adalah baik. Jadi anda semua boleh pergi ke hadapan dan kod yang di Ruang sekarang. Atau kita hanya berbincang? ROB: Kami hanya boleh berbincang. Saya tidak tahu. Kalian boleh cuba. Bercakap di kalangan diri untuk sedikit. Kami akan memberikan anda peluang kod. [INTERPOSING suara] ALI: - sejuk SPEAKER 30: Ini adalah seperti komedi penggodam. ALI: Ya, kami hanya memberitahu berita, akan melaluinya. Merompak: Dan kami kembali. ALI: Itulah jenis pelik. Saya rasa seperti kita harus mempunyai sebuah stesen berita CS50 dan kita boleh sebenarnya duduk seperti ini. ROB: Berita Hacker. ALI: Berita Hacker 50. ALI: Rasa bebas untuk bertanya apa-apa soalan jika anda keliru. ROB: Adakah sesiapa yang terperangkap? ALI: Ya, itu satu perkara yang baik. ALI: Tunggu, anda terperangkap di kerusi anda? Oh. Saya adalah sedikit berkenaan. ROB: Kerana saya hanya menyedari bahawa kita akan mahu seorang pengendali bitwise. Untuk sekarang, mari kita hanya menukar huruf besar kepada huruf kecil. ALI: Maaf, adakah semua orang mendapatkan pengumuman bahawa? Kami akan pergi dari huruf besar kepada huruf kecil. ROB: Kemudian kita akan membincangkan huruf kecil kepada huruf besar kanan selepas itu. Oh, tidak. Kami mempunyai pepijat dalam hal ini, yang mana, saya rasa, kita tidak pernah cuba untuk menjalankan. Yang hanya merupakan char c perlu diisytiharkan di luar gelung, kerana skop terhad dalam gelung. SPEAKER 32: Dalam kes ini, adalah salah untuk menggunakan nombor? ROB: Eh, anda tidak perlu. Jika saya menjamin anda bahawa modal 'A'- atau, huruf kecil' a 'modal tolak' A ' adalah betul-betul satu bit, tetapi anda tidak tahu 32 ia - perkara akan bekerja sama dengan baik jika ia adalah 16 bit yang telah dibalik - atau tidak, saya rasa ia wouldn't - atau 64 bit dibalik, mungkin. Tetapi anda tidak perlu untuk menggunakan 32. Anda sebaliknya boleh menggunakan huruf kecil 'A' '' modal tolak. SPEAKER 32: Okay. Apa yang boleh anda lakukan jika anda berasa seperti anda menulis terlalu banyak adalah anda boleh menentukan ia di atas. Jadi, anda boleh menjadi seperti, perbezaan int = huruf kecil 'A' '' modal tolak. Dan maka anda boleh menaip perbezaan sebaliknya. Itulah yang sah. Tetapi hanya menggunakan nombor 32 adalah jenis - SPEAKER 33: Walaupun ia adalah kerana fakta bahawa ia adalah sedikit 32? ALI: Ya. ROB: Mungkin ada - satunya jaminan kita perlu untuk membuat anda adalah bahawa perbezaan antara huruf kecil dan huruf besar adalah satu bit. Ia tidak seharusnya perkara yang ia berlaku untuk menjadi sedikit 32 itu dibalik. Untuk pertimbangan masa, kita akan mula pergi ke atas ini. Ia adalah mengapa jika anda belum selesai. Jangan bimbang tentang ia. ROB: mengandaikan c adalah surat modal - kita tidak perlu menganggap c adalah surat modal. Kita tahu c adalah surat modal selepas gelung selama ini - do-gelung while. Jadi yang bermakna ia kelihatan seperti ini 'A'. Jadi, jika kita mahu membawa ini 'A' ini 'a', apa yang kita perlu lakukan? Jadi bagaimana kita menukar dan flip bit? ALI: Bagaimana kita flip ia? ROB: Jadi kita tahu kita mahu flip sedikit 32. Jadi yang akan melakukan 'a' tolak 'A', atau kita boleh menulis 32, tetapi - darn, ia adalah cara lain di sekeliling. ALI: Okay jadi Rob sini mengira jumlah itu, nombor ajaib 32. Jadi dia mengetahui mana bahawa kawasan flip bit akan menjadi. Dan kemudian apa yang kita meletakkan mana tanda tanya? ROB: Bagaimana kita terbalikkan sedikit yang? Dalam segi surat huruf besar, ia adalah 0, dan kita mahu menjadi 1. SPEAKER 34: |. ROB: Ya. Jadi ini kita mengatakan kita mengambil 'A'. Kami ORing dengan 0 - 1000 - dan bahawa =. ALI: Adakah yang masuk akal untuk semua orang? Kita boleh pergi melalui sedikit demi sedikit jika anda mahu. SPEAKER 35: Adakah anda [didengar]? ALI: Di mana tanda tolak? ROB: Oh, kamu maksudkan di sini? ALI: Oh, ya. ROB: Jadi saya rasa ini adalah kita. Kita boleh mengatakan 32, dan kini kami hanya menggunakan pengendali bitwise. ALI: Kami tidak mahu nombor sihir. Kami tidak akan berbuat demikian. Juga saya fikir kita hanya perlu menggunakan pengendali bitwise - SPEAKER 36: Jika anda menggunakan ^ A, anda akan mendapat 32? SPEAKER 37: Ya, saya fikir - ROB: Ya anda akan. ALI: Ini adalah bagaimana anda akan melakukannya untuk pergi daripada modal kepada huruf kecil. Kini sesiapa sahaja boleh beritahu saya kenapa Rob dan saya berubah segera dan bagaimana kita pergi dari huruf kecil huruf besar, bukannya huruf kecil huruf besar seperti dahulu kita? Adakah sesiapa yang mempunyai apa-apa idea mengapa yang mungkin menjadi lebih sukar? ROB: Jadi kita akan lakukan - ALI: Ya, teruskan. SPEAKER 38: | pengendali adalah hanya benar-benar baik untuk menambah. ALI: Ya, sebenarnya. ROB: Jadi apa yang kita mahu lakukan dalam huruf kecil kepada huruf besar kes, menukar ini A''- jadi kami mahu dimasukkan ke dalam beberapa nombor di sini dan menggunakan beberapa pengendali supaya ia datang keluar modal A. Kami masih mungkin menggunakan 32 entah bagaimana, tetapi kini bagaimana kita mendapatkan ini keluar ini? Jadi c - oh, saya masih mahu bahawa terlalu - ALI: Jadi sekarang jika kita menukar daripada huruf kecil kepada huruf besar lagi, maka kita melakukan operasi ^, seperti yang anda semua berkata. ROB: Terdapat cara lain anda boleh melakukan perkara-perkara. Banyak pengusaha bitwise akhirnya menjadi sangat mudah ditakrif dari segi pengendali bitwise lain. Jadi saya akan tidak menggunakan ^ atau pada semua, tetapi ^ bekerja dengan sempurna halus. ALI: Okay, jadi kita pergi untuk pergi pada masalah yang lepas, yang merupakan asas - masalah terakhir ialah untuk menukar sesuatu ke dalam binari. Jadi, sebagai contoh, anda mempunyai 50, dan kemudian anda menukar kepada perduaan, yang merupakan 110010. Dan saya fikir kalian semua tahu tentang binari dari kuliah. Dan anda juga tidak sepatutnya meletakkan sebarang 0s utama ke dalamnya. ROB: Anda boleh mengabaikan bahagian itu buat masa sekarang. Pas pertama, anda boleh melakukannya supaya terdapat 0s terkemuka. Dan kemudian kita boleh mengubah bahawa tidak mempunyai 0s utama, jika kita mempunyai masa. ALI: Jadi jangan bimbang tentang itu. Hanya cuba untuk mendapatkan dalam perduaan. Sebuah tempat yang baik untuk memulakan akan menjadi - ROB: Kita perlu untuk meminta integer. ALI: Oh yeah, itu satu yang baik. Kita boleh mulakan dengan itu. Jadi anda boleh menukar segera. Jadi bukan watak, sekarang kita sedang berhadapan dengan integer. Sejuk? ROB: Dan kini apa yang kami buat sementara keadaan akan menjadi? Ia meminta untuk integer bukan negatif. ALI: Apabila kita mahu untuk terus mendorong pengguna untuk sesuatu yang lain? Apabila ia adalah lebih kecil daripada 0. ALI: Betul. ROB: Walaupun i adalah kurang daripada 0. ALI: Sekarang kita mahu menukar. Adakah anda semua mempunyai sebarang idea apa yang perlu dilakukan? Mana-mana inklings? Yeah. SPEAKER 39: Adakah kita perlu menukar, atau kita hanya boleh mencetak beberapa 0s dan 1s yang akan menjadi nombor yang betul? Anda boleh lakukan untuk gelung dan menghitung oleh kuasa 2? ROB: Ya. Anda tidak perlu untuk menukar i kepada perduaan - perwakilan binari i tidak akan dimuatkan di dalam i. Anda hanya perlu mencetak perwakilan binari i. ALI: Dalam erti kata lain, anda tidak perlu untuk pergi oleh kuasa-kuasa dua. ROB: Kerana i sudah disimpan sebagai binari, jadi anda tidak perlu menukarkan ia kepada perduaan. Hanya pergi ke binari itu, dan mencetaknya. Dan anda akan perlu menggunakan bitwise, kerana anda mahu melihat bit sebenar. Anda tidak perlu menggunakan bitwise, tetapi sila lakukan. Dan itulah sebenarnya - anda hanya boleh melakukan kuasa dua dengan mendarabkannya dengan 2. Kami akan pergi ke salah satu lepas dua operator binari bitwise, yang satu ini. Jadi, apabila anda mengambil - ALI: Bolehkah anda pergi melalui kedua-dua mereka? ROB: Ya. Jadi mari kita pergi dengan 9. Jadi 9 anjakan kiri 1 - apa yang meninggalkan cara anjakan hanya menggerakkan semua bit ke kiri dan memasukkan 0 a. Jadi kita sedang bergerak semua bit daripada 9 kepada satu kiri kedudukan, yang memberikan kita - Jadi notis kita telah beralih segala-galanya meninggalkan satu, dan dimasukkan 0 pada sebelah kanan. Jika kita telah beralih ditinggalkan oleh dua, kita akan beralih segala yang ditinggalkan oleh dua, dan memasukkan dua 0s untuk mengisi jurang. Soalan? ALI: Jadi maka anjakan betul melakukan perkara yang sama. Jika anda mempunyai 9 anjakan betul 1 maka anda hanya bergerak segala-galanya ke sebelah kanan, anda akan kehilangan angka, jadi 100 sebaliknya. ROB: Jadi anda ia adalah baik bahawa anda akan kehilangan sedikit yang berlaku untuk semua cara ke kanan. Terdapat beberapa jenis syif yang betul, tetapi pada dasarnya boleh anda fikirkan betul beralih sebagai hanya membahagikan dengan 2. Dan anda boleh berfikir peralihan kiri sebagai membiak dengan 2. Jadi, jika anda ditukar ini - jika anda ditukar 9 anjakan 1, yang adalah sama dengan 10010, jika anda sebenarnya pergi melalui binari dan menemukan apa yang, ia hanya akan menjadi 18. Kami hanya membiak dengan 2. 1001 anjakan kiri 2 akan menjadi 36. Kami membiak dengan 4. Okay, sejuk, supaya pengendali berguna bitwise untuk yang satu ini. Lebih banyak kekeliruan? Adakah anda semua mahu mencubanya? Atau kita hanya boleh melompat kanan dalam dan memulakannya? ROB: Kita mungkin perlu melompat hak masuk ALI: Ya, Okay. Merompak: Dan berjalan melaluinya bersama-sama. ALI: Well, saya hanya akan pergi ke dalamnya. Jadi kerana dia berkata, pada mulanya, kita akan hanya pergi melalui sedikit demi sedikit. Jadi kita akan memerlukan gelung. Adakah sesiapa yang mempunyai idea tentang jenis terbaik gelung untuk pergi melalui ini? Kami mempunyai manakala gelung, lakukan sementara gelung, gelung. SPEAKER 40: Do-gelung while? ROB: Jadi ingat apa yang saya katakan sebelum ini kira-kira, kita hanya menggunakan do-manakala gelung untuk mendapatkan input pengguna. Anda akan tidak pernah cukup banyak pernah menggunakan mereka untuk apa-apa lagi. ALI: Masalah dengan melakukan manakala gelung ialah ia melakukan sesuatu sebelum ia memeriksa keadaan. Jadi, ia boleh melakukan sesuatu yang buruk - suka, menyakiti - melakukan sesuatu yang tidak mustahil. Jadi anda mahu semak dahulu. ROB: Terdapat banyak kes di mana anda boleh menggunakan do-manakala gelung, tetapi orang tidak mengharapkan anda untuk menggunakan mereka melainkan jika ia adalah input pengguna. Jadi kita telah menggunakan do-gelung while untuk mendapatkan i. Berapa kali gelung kami akan mahu gelung? Kami ingin menggelung berulang setiap bit i. Berapa bit di i? SPEAKER 41: 32. ALI: Ya. ROB: Jadi, terdapat 32 bit. Kita tidak mahu untuk mengatakan 32. Kami bukannya mahu untuk mengatakan sizeof - yang, anda telah melihat bahawa di dalam kelas lagi? ALI: Nope. ROB: Mengapa ia mengatakan untuk menggunakan bahawa - sizeof (int) kali 8 - ALI: Jadi, sizeof - SPEAKER 42: [didengar] ALI: Menarik. Jadi, sizeof adalah fungsi terbina dalam C di mana ia hanya memberitahu anda bilangan bit dalam - ROB: Bytes. ALI: Bytes, maaf - bilangan bait bahawa pembolehubah mempunyai untuk menyimpan nilai. Jadi saya fikir dia pergi lebih dalam kelas, maka, int 4 bait mungkin. Sejuk? ROB: Tetapi anda tidak perlu tahu bahawa int 4 bait. Anda harus mampu untuk mengatakan - anda perlu menggunakan sizeof (int) untuk mendapatkan 4 bait. Dan itulah sebenarnya penting untuk beberapa perkara. Int tidak mungkin 4 bait. Pada komputer lain, int mungkin 8 bait. Jadi program anda tidak akan bekerja pada komputer itu kerana anda berkod keras 32 bit apabila pada komputer itu berlaku untuk menjadi 64-bit. ALI: Jadi anda mempunyai jumlah bilangan bit yang anda mahu ia untuk mengubah. Merompak: Dan perbezaan antara bait dan sedikit adalah bahawa terdapat adalah 8 bit dalam satu bait. Jadi sizeof (int) mengembalikan 4 bait, maka kita perlu melipatgandakan bahawa oleh 8 untuk mendapatkan 32-bit. ALI: Okay, jadi kita tahu maksimum dan kita tahu kita mahu pergi dari - kita mahu pergi melalui mereka semua. Jadi kita mahu pergi dari 0 hingga numBits. Jadi adakah sesiapa yang tahu bagaimana untuk menulis gelung untuk itu? Sesiapa sahaja? SPEAKER 43: [didengar] ALI: Jadi anda mahu merentasi nombor i dari bit 0 bit pertama, kedua sedikit, sedikit ketiga, semua cara untuk numBits. Max bilangan bit yang anda boleh mendapatkan. ROB: Apakah gelung biasa kita gunakan apa yang kita mahu lakukan kali x sesuatu? ALI: Bagi. Sempurna. Jadi kita mempunyai. Dan kemudian kita akan mewujudkan iterator, yang tidak akan menjadi i. ROB: j. ALI: J = 0. Jadi kita akan bermula pada 0. Dan kemudian kita akan mempunyai keadaan untuk memastikan, manakala anda melalui setiap kali tunggal - [INTERPOSING suara] ROB: j. ALI: j adalah kurang daripada numBits. Jadi kita tidak mahu melakukan sebenar adalah sama dengan satu, kerana mereka berada numBits jumlah, dan kita bermula pada 0. Jadi, kita sebenarnya akan mempunyai - SPEAKER 44: Oh. ALI: indeks tidak berakhir pada numBits tolak 1. ROB: Kami label bit 0-31, kita tidak melabelkan mereka 1-32. ALI: Dan kemudian kita pergi untuk kenaikan setiap kali dengan satu, kerana kita mahu memeriksa setiap satu. Jadi kita akan pergi j + +. SPEAKER 45: Mengapa kamu berbuat demikian? SPEAKER 46: Mengapa anda hendak pergi melalui setiap bit? ROB: Jadi kita mahu pergi melalui setiap bit dan - Jadi mari kita mengatakan bahawa kita mempunyai beberapa nombor. ALI: 68. ROB: Kita boleh menggunakan 68. Jadi binari akan menjadi 100100. Jadi ini adalah di dalam i dan kita mahu pergi lebih setiap bit ini. Adakah ia 1? Cetak 1. Adakah ia 0 a? Cetak 0. Kemudian kita pergi ke bit seterusnya. Adakah ia 1? Cetak 1. Adalah 0? Cetak 0. ALI: Cool, okay. Sekarang kita berada pada indeks betul di mana bit yang. Bagaimana kita boleh menyemak bahawa satu tertentu? Katakan kita berada di j = 0, jadi kita mahu untuk memeriksa indeks 0 bit. Jadi, dalam kes ini, yang satu ini. Jadi sekarang bagaimana kita pergi tentang daftar oh, ia akan menjadi satu ini. ROB: Ya. ALI: Maaf. Bagaimana kita akan pergi tentang memeriksa bahawa satu, dalam erti kata? Bagaimana kita akan memeriksa jika ia adalah 0 atau 1? Nah let's - KELAS: Dan 1? ALI: Dan? Yeah. ROB: Jadi mari kita mengatakan bahawa kita sudah mempunyai 1. Kemudian ini & ini akan kembali sama ada ia adalah 1 atau 0. ALI: Jadi kita boleh pergi ke bawah. Dan yang boleh kita lakukan sebagai kalian berkata, melakukan & fungsi. ROB: int - bagaimana saya mahu untuk mengatakan ini - isOne = i. Dan bagi bit pertama kita berlaku untuk melihat, kita sedang melakukan i & 1. Sekarang apa yang kita akan mahu dengan sedikit kedua? SPEAKER 47: 2. ROB: Ya, kedua bahawa kita berada pada 2. ALI: Anda akan melihat bahawa 1 telah berpindah ke satu kiri. Jadi kita telah belajar mana-mana pengendali bitwise untuk melakukan fungsi itu? ROB: Yang seterusnya - ALI: Ya, betul, tepat. Jadi ia adalah satu anjakan kiri. Sebaliknya sentiasa memeriksa dengan 1, kita akan beralih. Dan berapa kali kita akan beralih? Jika kita sedang memeriksa satu 0 maka kita akan bergerak lebih sifar. Ya, sebenarnya. Jadi anda meninggalkan beralih oleh j. Sempurna. Jadi sekarang kita tahu - kita mempunyai int ini jika ia adalah 1, dan kemudian - begitu baik Rob menipu di sini - dan sebagainya kini beliau telah pergi ke hadapan dan dia hanya mengatakan bahawa jika ia sebenarnya adalah 1, kerana 1 menilai benar, jadi kita tidak perlu untuk mengatakan senaraikan isOne sama dengan 1 - jadi jika isOne, maka kita mencetak 1, dan sebaliknya kita mencetak 0. ROB: Jadi program kami mempunyai pepijat keseluruhan. Nah, soalan pertama ini. SPEAKER 48: Bolehkah anda pernah meletakkan isOne di dalam empat bahagian operasi dan maka ia telah beralih dirinya sebagai bahagian terakhir? Jadi isOne sama dengan 1 dan kemudian - ROB: Ya, anda boleh. Kita sebenarnya boleh menunjukkan bahawa apabila kita menetapkan bug yang saya kira-kira untuk berbincang dengan anda semua. Notis perintah kita pergi lebih perkara. Memandangkan perwakilan perduaan ini, kita bermula dengan sedikit 0. Jika ia adalah 0, maka kita mencetak - dengan baik, ia adalah 0, jadi kita mencetak 0. Kemudian kita pergi ke bit kedua. Ia adalah 0, jadi kita mencetak 0. Kemudian kita pergi kepada bit ketiga. Ia adalah 1, jadi kita mencetak 1. ALI: Jadi ia pergi ke belakang. Jadi bagaimana anda lelaki mencadangkan bahawa kita menetapkan bahawa dan pergi cara lain? SPEAKER 49: [didengar] ROB: Ya. Jadi, bukannya pergi dari 0 hingga numBits, kami akan pergi dari numBits bit kepada 0. ALI: Jadi [didengar] sentiasa boleh pergi dengan cara yang lain. ROB: NumBits tolak 1, kerana itulah nubmer lepas - ALI: Kerana ia pergi 0-31. Dan maka kita akan sentiasa memastikan bahawa ia adalah lebih besar daripada 0 supaya anda tidak pergi terlalu jauh ke kanan. Dan kemudian anda sentiasa akan tolak oleh 1 untuk pergi ke kanan. ROB: Jadi sekarang kita mempunyai gelung terbalik, dan nombor adalah kembali ke percetakan dalam cara yang betul. SPEAKER 50: Jangan anda perlu mengubah perkara anjakan terlalu? ALI: Jadi tidak. ROB: Kami sedang menjalankan operasi yang sama yang tepat, kecuali kini dalam susunan terbalik. Jadi, bukannya melakukan peralihan oleh numBits tolak 1 untuk mendapatkan apa sahaja yang ini sedikit, bukannya melakukan yang lepas, kita hanya akan melakukannya terlebih dahulu. Dengan menterbalikkan ini di sini, kita mengakaskan perintah daripada segala-galanya yang berlaku di dalam. Tetapi kita tidak mahu mengubah apa yang berlaku di dalam pada semua. ALI: Adakah yang masuk akal? Pemprosesan? Okay, jadi tidak sesiapa mempunyai apa-apa soalan lain konsep? ALI: Sebelum kita pergi ke titik yang - ALI: Baiklah, baik pergi. Merompak: Daripada menggunakan j untuk menjadi kami - bukannya menggunakan j sentiasa beralih oleh, seperti satu syif j kiri, saya fikir apa anda katakan ialah seperti, j menggunakan sendiri. Jadi untuk j - Saya rasa ini adalah keras - j = 1 << 31. Adalah bahawa apa yang saya mahu? Saya fikir ia adalah << 31. j> = 1. j >>, >> isOne, i & j - jadi sekarang bukannya menggunakan - ALI: Anda sentiasa bergerak j bukannya mempunyai satu indeks untuk memeriksa ia. Ia bukan yang buruk. Kami menggunakan sejenis serupa logik. Jadi, jika anda kembali - oh, tetapi ia akan hilang. Baiklah, anda hanya akan menaip lagi. Jika anda melihat bahawa kita mempunyai 1 << j jumlah kali, dan kami incrementing j setiap kali tunggal oleh satu kenaikan, tetapi kali ini bukan mereka sedang melakukan kenaikan j di atas bahagian dalam untuk gelung. Jadi bukannya sentiasa bergerak ke bawah - ROB: lelaran pertama untuk gelung, kita mempunyai j adalah 10000. Lelaran seterusnya bagi gelung adalah 01000. Lelaran seterusnya adalah bahawa. Dan 1 hanya akan terus menyebarkan turun sehingga kita mencapai sangat akhir, di mana kini ia ini. Yang seterusnya, 1 akan ditolak di luar, dan j tidak lagi lebih daripada atau sama dengan 1. Saya juga boleh meletakkan lebih besar daripada 0, perbezaan yang sama. Dan kemudian itu sahaja. Soalan? Yeah. SPEAKER 51: [didengar] ROB: Jadi yang sama seperti - pernahkah anda melihat j + = 3? Jadi ini adalah sama seperti j = j + 3? Anda boleh berbuat demikian untuk hampir mana-mana pengendali dalam C. Jadi j >> = 3 sama dengan j = j >> 3. Jadi yang berfungsi juga dengan pengendali bitwise. Dan saya tidak perlu meletakkan 31 di sini. Saya sepatutnya meletakkan numBits - 1. ALI: Yay, tiada nombor ajaib. Okay, 04:00 walaupun, jadi jika anda lelaki itu mempunyai untuk pergi - tetapi adakah ini masuk akal? Adakah anda lelaki itu mempunyai apa-apa soalan lain? ROB: Saya juga hendak campakkan dalam bahawa jika kita mahu - dia membincangkan pengendali pertigaan pada semua? ALI: No. Ia okay. ROB: Jadi, anda boleh melihat ke dalam untuk masa depan. ALI: Okay, benar-benar? Sekarang anda hanya menunjukkan off. ROB: Tidak, sekarang it's - ini adalah apa yang mendapat orang yang berminat, dan sekarang mereka akan pergi melihat ke dalamnya. Jadi sekarang, yang melakukan perkara yang sama, dalam satu langkah. Jadi periksa dahulu, i & j 1? Adakah ia benar? Jika ya, mencetak 1, lain, mencetak 0 a. ALI: Tetapi melakukannya dengan cara yang lain adalah betul-betul halus juga. Ia mempunyai logik yang sama. Jadi ia tidak seperti satu - ROB: Pada ketika ini, kita boleh menyingkirkan mereka pendakap kerinting, kerana ia hanya satu-line bagi gelung. ALI: Okay, jadi adakah itu masuk akal? Itu adalah jenis lompatan. Tetapi ia adalah hanya jenis sintaks, lebih-lebih lagi. Sejuk? Mana-mana soalan-soalan lain? ROB: Baiklah. ALI: Semua betul, sejuk. Terima kasih kerana datang ke seksyen.