[Powered by Google Translate] [इलेक्ट्रॉनिक स्थैतिक ध्वनियों] रोब: ठीक है, तो क्या हम सिर्फ आप के लिए लाया CS50 रिक्त स्थान है. अली: रुको, वापस इंतजार. अनुभाग में आपका स्वागत है! रोब: अनुभाग के लिए आपका स्वागत है! अली: हाँ! आरओबी: Supersection! अली: मैं अली हूँ और इस रोब है. ठीक है, अब हम Spaces समझाता हूँ. रोब: तो क्या हम सिर्फ आप के लिए लाया CS50 रिक्त स्थान है. आप अपने वर्गों में एक बहुत कुछ इस सेमेस्टर का उपयोग होगा. असल में, हम पहले से ही है आप उपकरण डाउनलोड. और आप CS50 रिक्त स्थान एक वेब इंटरफ़ेस एक उपकरण से बात करने के बारे में सोच सकते हैं कि हम कुछ सर्वर पर कहीं है. तो तुम इस इंटरफ़ेस में अपने कोड चलाने कर सकते हैं, और हम करेंगे देखने के लिए कैसे काम करते हैं. तुम भी अनुभाग में अन्य लोगों के कोड को देख सकते हैं, और - अली: और के रूप में कुछ लोगों को पता चला है, तो आप तरफ लोगों चैट कर सकते हैं. और हम सब यह देखने के लिए, होगा भी तो, यह रोमांचक है. में आओ, आओ और बैठो. एक सीट ले लो. आरओबी: तो, वर्गों रहे हैं - अली: नहीं, नहीं, तुम लोगों को आ सकता है. आरओबी: धारा अधिक इंटरएक्टिव इस सेमेस्टर के होने जा रहे हैं. अली: ओह, वह की तरह है - ओह. ठीक है, शांत,. तो, अगर तुम लोगों को बस में आ रहे हैं, तो आप इस लिंक पर जाना है, अगर मैं प्राप्त कर सकते हैं कर सकते हैं वहाँ, वहीं पर. हम वास्तव में यह नहीं लिखने के लिए, क्योंकि वहाँ बोर्ड स्थान नहीं है, लेकिन इस कड़ी यहीं, अपने कंप्यूटर पर जाना है, और तुम CS50 प्रवेश करेंगे रिक्त स्थान है, जो एक बहुत अच्छा बात है. ठीक है. क्या आप एक समस्या है? रोब: तो आप समस्याओं का पता कर सकते हैं - हम इस कहीं लिखने के लिए सक्षम होने की जरूरत है. तो अगर आप cs50.net/psets जाने के लिए और यह हैकर supersection है - और आप एक pset हैकर संस्करण में जाना, विनिर्देश में देखो कहीं नीचे पृष्ठ पर - अली: तो बुनियादी तौर पर, जबकि रोब है देख, क्या हम में करने जा रहे हैं अनुभाग आज वहाँ समस्याओं का एक वर्ग है - रोब: - आठ पेज पर. अली: - समस्याओं का एक वर्ग कहा जाता है - सवालों की धारा: रोब. अली: क्षमा करें, सवालों की एक खंड है. और उन रहे हैं कि हम क्या करने के लिए जा रहे हैं - उन रहे हैं कि क्या हम आज खंड में जा रहे हैं. और हम यह CS50 Spaces पर कोड जा रहे हैं, और उम्मीद है कि काम करेंगे. और हम सिर्फ उन्हें के माध्यम से बात कर सकते हैं. और तुम लोगों को सवाल पूछने के जब भी आप महसूस कर सकते हैं - रोब: तो यह सबसे psets के साथ एक आम बात हो रही है. मैं इस एक के साथ लगता है, यह कहना है कि आप इन सवालों हाथ अंदर नहीं है लेकिन विचार है कि इन सवाल pset पर डाल रहे हैं, और आप आ सकते हैं के लिए अनुभाग उन सवालों के जवाब दिए. या यदि आप अनुभाग में नहीं आते हैं, तो आप अपने दम पर उन्हें जवाब देने के लिए या प्राप्त कर सकते हैं कार्यालय घंटे या कुछ में मदद करते हैं. लेकिन ये सवाल है कि आप समस्या सेट के लिए तैयार करने के लिए चाहिए रहे हैं. और हैकर संस्करण पर सवालों की एक बहुत कुछ बस के बारे में हो सकता है अपने वर्तमान सीएस ज्ञान का विस्तार. अली: हाँ, बहुत ज्यादा. ठीक है, तो CS50 Spaces पर हर कोई है? हाय, अंदर आ जाओ. अध्यक्ष: 1 हम अधिक समय से एक यूआरएल को देख सकते हैं? रोब: हाँ, यह आसान हो सकता है एक बार आप अपने वर्गों में वास्तव में कर रहे हैं, जाएगा और अपने TF आप पहले यूआरएल ईमेल कर सकते हैं. अली: हाँ, एक सीट ले. सीटों यहाँ हैं. सामने है कि बुरा नहीं है. क्या? तो, CS50 Spaces, हम वहाँ हो रही है. क्या किसी को भी किसी भी सवाल है, इससे पहले कि हम में मिल - क्या? आरओबी: वहाँ किसी भी चाक नहीं है. [अश्राव्य] अली: क्षमा करें. आप अपने नाखूनों का उपयोग कर सकते हैं? हम एक बहुत ही उच्च तकनीक वर्ग के लिए एक बहुत कम तकनीक कमरे में कर रहे हैं. ठीक है, अच्छे के हर तरह की है? क्या किसी को भी इसके बारे में अभी भी प्रश्न हैं? जैसा कि मैंने पहले कहा, हम में सवालों के अनुभाग के माध्यम से जाने के लिए जा रहे हैं pset विनिर्देशों. तो वहाँ सिर्फ समस्याओं के एक जोड़े है कि हम जा रहे हैं CS50 रिक्त स्थान में कोड. हर कोई अच्छा है? ठीक है. अच्छा है? आरओबी: क्या आप एक लैपटॉप है? अली: आप लुकास के साथ बाहर लटका कर सकते हैं. वह सही आप के बगल में बैठा है. संबंधों में समय. रोब: तो, पहली समस्या के साथ शुरू कर दिया? अली: हाँ. हम शुरू कर सकते हैं. क्या तुम मुझे चाहते हैं - मैं जा सकते हैं. तो, हम pset ऐनक करने के लिए जाना होगा. ओह, यह कारण है - रोब: नियंत्रण. अली: ठीक है, तो हम जवाब में जा रहे हैं, इन बातों के रूप में अच्छी तरह से? आरओबी: ओह, हाँ. तो - अली: ओह, हर कोई घड़ी रोब अभिनीत शॉर्ट्स किया? ठीक है, शांत,. रोब: हाँ, मुझे नहीं लगता कि हम जरूरी आपके पास करने की उम्मीद इस अनुभाग के लिए आने से पहले यह देखा है, लेकिन हम उन पर चर्चा कर सकते हैं पहले समस्याओं, क्योंकि वे सवालों चीजों में से एक धारा के तहत कर रहे हैं. तो अगर आप इसे नहीं देखा है, चिंता मत करो. जो लोग कोशिश करते हैं और जवाब कर सकते हैं. तो, पहला सवाल, क्या एक पूर्व प्रोसेसर, # कैसे शामिल नहीं करता है संबंधित हैं? इसलिए किसी को भी उस के लिए जवाब है? अली: तुम लोग यह बात बाहर कर सकते हैं. बेशक, आगे बढ़ो. 2 अध्यक्ष: शामिल # कुछ पूर्व लिखित कोड है, और के बजाय यह नकल और अपने कार्यक्रम में चिपका, सिर्फ इतना कह रहा यह शामिल है, पूर्व प्रोसेसर जानता है कि वह वहाँ है और कि यह जोड़ना चाहिए बाद में या उससे पहले कुछ और होता है. अली: हाँ, भयानक है. कूल. आरओबी: तो पूर्व प्रोसेसर, जब आप वास्तव में एक कार्यक्रम संकलन कर रहे हैं यह है इस दिशा में पहला कदम है. संकलन चार बड़े चरणों में होता है. तो पूर्व प्रोसेसर 1 बड़ा एक है, और यह इस आदमी है कि जाता है और के माध्यम से इन हैश प्रतीकों में से सभी के लिए लग रहा है. और किसी भी लाइन है कि एक हैश के साथ शुरू होता है, पूर्व प्रोसेसर उस पर लग रहा है और देखता है अगर यह प्रक्रिया कर सकते हैं. तो # शामिल पूर्व प्रोसेसर बताता है कि कुछ cs50.h के लिए देखो फ़ाइल और बस कॉपी और इस फाइल में चिपका सकते हैं. तो क्या तुम सच में # आप चाहते हैं कुछ भी शामिल कर सकते हैं, लेकिन यह ज्यादातर को होने जा रहा है ज. फ़ाइलें. हम # अभी तक परिभाषित नहीं मिल गया है तो, कि कोई फर्क नहीं पड़ता. अली: हाँ, हम एक उस पर अच्छा कर रहे हैं. क्या किसी को उस बारे में कोई सवाल है? हम अच्छा कर रहे हैं? अगला सवाल. 3 अध्यक्ष: संक्षेप में, वहाँ के बारे में कुछ था ग के रूप में अच्छी तरह से? यह है कि प्रासंगिक है या यह अप्रासंगिक है? रोब: पूर्व प्रोसेसर के साथ सी के बारे में? 3 अध्यक्ष: हाँ, या मैं कुछ बनाने के लिए किया था? रोब: तो संक्षेप दिखा दिया गया है हो सकता है इस फाइल पूर्व प्रसंस्करण और यह एक और ग फ़ाइल outputting है, तो आप इस फाइल को पूर्व की प्रक्रिया कर सकते हैं - जब आप बस की तरह चलाते हैं, नमस्ते या बजना hello.c, आप सब कर रहे हैं संकलन में एक बड़ा कदम है. लेकिन आप स्पष्ट रूप से यह अपनी अलग चरणों में कर सकते हैं. तो पहले आप इसे पूर्व की प्रक्रिया कर सकते हैं. तो फिर तुम तो आप को इकट्ठा कर सकते हैं, संकलन और फिर आप लिंक कर सकते हैं कर सकते हैं. हम उन अन्य लोगों के लिए मिल जाएगा. लेकिन पूर्व प्रसंस्करण, आप पूर्व यह प्रक्रिया की तरह है, और फिर यह हो जाता है में एक सी फ़ाइल. क्योंकि पूर्व प्रसंस्करण वास्तव में कुछ भी नहीं बदलता है. यह सिर्फ कॉपी और चिपकाने के एक गुच्छा है. आप मैन्युअल कॉपी और यह अपने आप पेस्ट कर सकते हैं. अली: और स्पष्ट हो, ग फ़ाइल एक सी फ़ाइल है, तो यह सी कोड में लिखा है. तो यह सी सी कोड से कोड के लिए जा रहा है. आप सिर्फ पाउंड के साथ कर रहे हैं और अधिक कोड जोड़ने. आरओबी: जब आप इसे पूर्व संसाधित, यह अभी भी एक मान्य सी फ़ाइल है. 3 SPEAKER: ठीक है. अली: अच्छा सवाल है. मुझे लगता है कि पसंद है. ठीक है, अगला सवाल. संकलक क्या है? कोई है? हां. 4 अध्यक्ष: यह विधानसभा में पूर्व प्रसंस्कृत कोड में परिवर्तन. अली: बिल्कुल सही. रोब: हाँ. अली: कूल. आरओबी: तो है कि संकलक क्या विशेष रूप से कर रही है जब हम बजना का उपयोग कर रहे हैं. एक बहुत ही सामान्य अर्थों में, एक संकलक सिर्फ एक भाषा में कोड लेने की तरह है और इसे किसी अन्य भाषा में तब्दील हो रही है. तो सी में - या, अच्छी तरह से, बजना कोड ले जा रहा है कि सी में है और इसे विधानसभा को बदलने. और तुम विधानसभा बिल्कुल समझ में सक्षम होना नहीं है. लेकिन यह है कि भाषा है कि यह बदल रहा है में है. अली: ठीक है. और फिर, एक कोडांतरक क्या है? कोई है? 5 SPEAKER: बाइनरी [अश्राव्य?] अली: क्षमा करें, क्या? 5 SPEAKER: बाइनरी [अश्राव्य?] रोब: हाँ. अली: हाँ. तो कोडांतरक: रोब विधानसभा कोड वास्तव में है, वास्तव में आपके कंप्यूटर क्या समझ सकते हैं के करीब, लेकिन याद रखें कि यह काफी पाठ समझ में नहीं आ रहा है कि विधानसभा कोड है. आप इसे सीधे 1s और 0s में बदलने की जरूरत है. यह एक सीधा अनुवाद की प्रक्रिया की तरह है. हम सिर्फ आप एक मेज दे सकता है कि प्रत्येक नक्शे क्या विधानसभा निर्देश का मतलब है. लेकिन कोडांतरक सिर्फ तुम्हारे लिए इस अनुवाद कर रहे हैं. यह 1s और 0s में विधानसभा कोड बदल रहा है. अली: और फिर, पिछले एक के लिए, क्या एक linker है? और कैसे lcs50 करता संबंधित हैं? कोई है? आरओबी: यह सबसे मुश्किल और कम से कम एक संकलक वीडियो में बताया गया है. अली: क्या किसी को भी एक आदेश में देख lcs50 याद है? 6 SPEAKER: जब आप बनाने के लिए चला गया. अली: यह बनाने में है. हाँ, अच्छा, ठीक है. वहाँ किसी भी अनुमान या अस्पष्ट - हां, जाओ. 7 अध्यक्ष: मुझे यकीन नहीं कर रहा हूँ, क्योंकि अपने छोटे वास्तव में था [अश्राव्य], लेकिन यह था प्रत्येक पुस्तकालय के साथ अलग - अलग फ़ाइलों के लिए कर रहे हैं और फिर डालने के बारे में कुछ सब एक पुस्तकालय में उन्हें एक साथ? रोब: हाँ. तो जब आप hello.c है, यह वास्तव में एक सरल कार्यक्रम है. तुम सच में ही कर रहे हैं यह एक बात कर रहे हैं. लेकिन जब आप अन्य कार्यक्रमों में मिलता है - और मुझे लगता है कि जब भी आप अपने कार्यक्रमों में GetString, आप शुरू करने की आवश्यकता अन्य फ़ाइलों सहित. तो CS50 पुस्तकालय एक ऐसी फ़ाइल जिसमें हम implementations GetString और GetInt और उन सभी चीजों की. तो क्या linker करता है यह चारों ओर चला जाता है इन सभी के माध्यम से तलाश फाइलें, जहां कार्य परिभाषित देख रहे हैं, यकीन है कि जब मैं फोन कहीं GetString, यह कि GetString जानता है मतलब है कि यह CS50 पुस्तकालय में GetString. तो linker बस इन सभी फाइलें, उन्हें एक साथ स्मैश, और अब लगता है आप एक निष्पादन योग्य है. तो मन में रखने के लिए, यदि आप CS50 पुस्तकालय का उपयोग कर रहे हैं, तो आप दोनों की जरूरत है # शीर्ष पर शामिल है, और फिर भी आप के रूप में अपने आदेश में, कहा, आप - lcs50 है. तो तुम सिर्फ एक नहीं हो सकता. तो यह है कि भविष्य में संदर्भ के लिए मन में रखने के लिए कुछ है. 8 अध्यक्ष: तो, चलो का कहना है कि वहाँ एक और पुस्तकालय cs51.h तरह था, हम चाहते हैं भी जोड़ने के lcs51 है? रोब: एक ही कारण इस lcs50 पूरी तरह से काम करता है क्योंकि हम कि सेट है अपने उपकरणों में एक विशिष्ट स्थान में इतना है कि यह जानता है कि क्या Lcs50 का मतलब है. हम सिर्फ आप एक cs50.c फ़ाइल दे सकता है, और फिर आप इसे संकलन, कह सकता है बजना hello.c cs50.c, और फिर इसे डाल द्वारा अपने निष्पादन करना होगा उन दोनों को एक साथ फ़ाइलें. यह जानता है कि lcs50 मतलब है कि हम कुछ निर्देशिका में निर्दिष्ट में अधिक cs50.c अपने उपकरणों. तो अगर आप एक cs51.c सिर्फ इतना कह lcs51 द्वारा निर्दिष्ट होना चाहता था, तो हम भी यह है कि निर्देशिका में डाल की जरूरत है तो यह जानता है, जहां यह देखने के लिए. अली: अपने सवाल क्या था? 7 अध्यक्ष: आप CS50 लिंक क्यों है - अगर एकदम चमक इसे कॉपी / पहला कदम है जब आप इसे पूर्व संसाधित पर चिपकाया? अली: क्या आप इसे ले जाना चाहते हैं? आरओबी: बिल्कुल. तो cs50.h फ़ाइल सी से cs50.c का फ़ाइल अलग है. क्या आप कक्षा में प्रोटोटाइप से कार्य करने के लिए मिल गया है? ठीक है. तो बुनियादी तौर पर, cs50.h फ़ाइल को कॉपी और पेस्ट जा रहा है - अली: क्या तुम लोगों को पता है कि हस्ताक्षर क्या कर रहे हैं? ठीक है, तो बहुत ज्यादा है, अगर आप को देखो - रोब: चलो बहाना cs50.h वहाँ नहीं है. अब यह फाइल - आप है स्ट्रिंग = GetString कर रहे हैं. लेकिन जब हम कोड में इस बात के लिए मिल गया है, यह पता नहीं है क्या GetString है. यह जानता है कि यह एक समारोह है, के बाद से आप यह कह रहे हैं. लेकिन यह पता नहीं है कि यह वास्तव में एक स्ट्रिंग वापस करने के लिए माना जाता है. तो जैसा मैंने कहा था, स्ट्रिंग = GetInt, इस के बाद से किसी भी समझ में नहीं पड़ता है, आप एक स्ट्रिंग के लिए एक पूर्णांक हस्ताक्षर कर रहे हैं. लेकिन यह नहीं पता है कि GetString समझ पड़ता है, क्योंकि यह नहीं है पता है कि GetString एक स्ट्रिंग रिटर्न. तो cs50.h क्या कहते हैं कुछ इस तरह है. अली: तो रोब टाइपिंग है क्या है, यह एक तरह से एक वादा है कि यह करने के लिए जा रहा है इस समारोह GetString बुलाया है. रोब: यह है कि सभी cs50.h है को कॉपी करने और यहाँ में चिपकाने के रूप में अच्छी तरह से GetInt और उन सभी चीजों के रूप में. और यह सिर्फ कहते हैं कि GetString एक स्ट्रिंग वापस नहीं करता है. तुम्हें पता है कि यह कैसे अभी लागू नहीं है, लेकिन अब जब हम इस लाइन के लिए मिलता है, यह जानता है कि इसे सही ढंग से एक स्ट्रिंग रिटर्न. 9 अध्यक्ष: तो अगर हम # शामिल बात के साथ और बजाय परेशान नहीं किया सिर्फ लोगों के लिए प्रोटोटाइप ने लिखा है कि हम वास्तव में उपयोग करने के लिए जा रहे हैं? रोब: हाँ. तो चलो इस चलाने के. 9 अध्यक्ष: यह है? तो, डिफ़ॉल्ट रूप से, यह CS50-l सिर्फ इसलिए कि करना होगा. रोब: - अभिव्यक्ति. अली: हाँ, क्योंकि जैसा कि आप ने कहा, यह फ़ाइल बनाने में है. रोब: cs50.h भी typedef स्ट्रिंग * चार होना होता है. आप पूरी तरह से उपेक्षा कर सकते हैं कि क्या अब के लिए इसका मतलब कर सकते हैं. लेकिन यह है कि भी cs50.h. में शामिल कुछ है तो अब चीजें पूरी तरह से ठीक काम किया. यह वास्तव में एक ही चलाता है के रूप में था, जब हम सिर्फ # शामिल. और इतने पर सहित cs50.h अधिक शामिल हैं चीजें आप की आवश्यकता के लिए होता है - की तरह, आप इस कार्यक्रम में GetInt नहीं का उपयोग करने के लिए, लेकिन यह बात नहीं है. यह बस इसे अनदेखा करेंगे. अली: और फिर जब आप यहाँ पर lcs50 करते हैं और सही, क्या हो रहा है पर है कि यह वास्तविक कार्यान्वयन कोड होने वाला है. इतना है कि जहां यह वास्तव में है, कर रही है - GetString के लिए कोड लेखन. तो यह सिर्फ एक वादा अब नहीं है. यह वास्तव में के माध्यम से जा रहा है और स्ट्रिंग और वह सब सामान ले. मतलब होता है? प्रश्न? सही सभी. कूल सेम. आरओबी: अब हम वास्तविक कोड के लिए स्थानांतरित कर सकते हैं. अली: ठीक है. तो यहाँ पहली समस्या है. तो इसे कहते हैं, लिखने के एक प्रोग्राम है कि एक छोटे के लिए उपयोक्ता को प्रांप्ट पत्र और फिर यह बिटवाइस का उपयोग कर के बिना अपरकेस धर्मान्तरित संचालन, के रूप में नीचे नमूना उत्पादन प्रति. तो आप देख सकते हैं, तो आप / a.out साथ कार्यक्रम चलाने के लिए, और उसके बाद आप कर रहे हैं लोअरकेस में डाल दिया जा रहा है, और तब अपने प्रोग्राम पूंजी देना चाहिए ए तो आप लोग सब क्यों नहीं यह CS50 Spaces पर एक शॉट दे? तो आप लोग सब यहां जा सकते हैं. और तुम यहाँ के सभी कोड को नष्ट कर सकते हैं. और फिर आप आगे जाना है और बात कोडन शुरू कर सकते हैं. रोब: आप शायद getchar है कि उपयोग करना चाहते हैं CS50 पुस्तकालय में शामिल है. अली: मुझे लगता है कि यह बेहतर होगा अगर आप शीर्ष भाग को बचाने के लिए हो सकता है. तो तुम सिर्फ बीच में सामान बदलना चाह सकते हैं. आगे बढ़ो और काम करते हैं. एक दूसरे के साथ काम करने के लिए स्वतंत्र महसूस करो. रोब: और आप सवाल पूछना अगर तुम हो सकता है - 10 अध्यक्ष: एक बिटवाइस आपरेशन क्या है? रोब: तो इस समस्या के लिए कि उपेक्षा. अली: यदि आप यह पता नहीं है, यह अच्छी बात है. रोब: हम यह अगले समस्या में उपयोग करने के लिए जा रहे हैं. लेकिन अगर तुम नहीं जानते कि एक bitwise ऑपरेटर क्या है, वह ठीक है. 10 अध्यक्ष: यह ASCII कोड मोड़ की तरह है? अली: नहीं. रोब: नहीं आप है कि इस समस्या के लिए कर सकते हैं. 10 अध्यक्ष: आपको लगता है कि कैसे करते हो? इतना ही अगर मैं कहीं लिखने के लिए किया था - अली: या कुछ लिखने के साथ. रोब: मैं इस मामले में बस प्रकार की तरह सकता है. अली: शीर्ष पर टाइप करें. रोब: ओह, मैं एक mic पर बैठा हूँ. तो, हम व्याख्यान में देखा है कि राजधानी के लिए ASCII मान 65 है. और पूंजी बी 66 हो सकता है, और इतने पर. तो आप 'ए' का शाब्दिक का उपयोग कर सकते हैं 65 नंबर का मतलब. की तरह, इस 65 मूल्य है. 'ए' - मैं int x = 100 की तरह कुछ कर सकते हैं. और अब एक्स मूल्य होगा 100 - 65. अली: कि आप चलाने के लिए और है कि दिखाने के लिए कर सकते हैं. ओह, शायद नहीं. कोई बात नहीं. रोब: मैं इसे मुद्रित था. 10 अध्यक्ष: आप इसे कैसे बदल कर चरित्र को वापस? अली: तो अगर आप नहींं - तुम सिर्फ यह चार एक होने के लिए मजबूर के बराबर होती है,. रोब: तो वहाँ एक है - एक चार और एक पूर्णांक के बीच अंतर सिर्फ आकार के संदर्भ में है. तो एक पूर्णांक के लिए चीजों का प्रतिनिधित्व करते हैं करने में सक्षम होना होता है , जैसे, अरब चार. चार केवल बातें 255 के लिए प्रतिनिधित्व करने में सक्षम है. लेकिन इस के अलावा अन्य उन दोनों के बीच कोई अंतर नहीं है. तो आप चार ग = 65 कह सकते हैं. वह कह रही है चार ग बराबर होती है 'ए' के ​​बराबर है. अली: ओह, नहीं. यह वास्तव में कुछ नहीं बचा है. आरओबी: नहीं, आप ऐसा नहीं कर सकते. अली: यह सिर्फ है - [कराह रही] रोब: ठीक है, तो क्या अली सिर्फ लिखा एक प्रोग्राम है जो पहले 100 प्रिंट था - एक पूर्णांक के रूप में 'ए', जो 35 था के रूप में हम उम्मीद करते हैं, 100 ऋण ASCII क्योंकि एक के मूल्य 65 है. फिर वह बाहर मुद्रित% ग, जो एक चार के रूप में व्याख्या का मतलब का उपयोग. 100 - तो एक 35 है. कि एक चरित्र के रूप में व्याख्या करने के लिए हैश प्रतीक होना होता है. यदि आप asciitable.com या जो कुछ भी पर लग रही है, तो आप देखेंगे कि 35 है हैश प्रतीक. अली: ठीक है, इस समस्या के बारे में किसी भी अन्य स्पष्टीकरण? ठीक है, तुम लोगों को आगे जाना है और इसे फिर से करना सकता है. सवाल पूछने या एक दूसरे से बात करने के लिए स्वतंत्र महसूस करो. या यदि आप पहले से ही कर रहे हैं, तो आप आराम कर सकते हैं. लुकास: वे एक ही कक्षा के क्रम में सभी लोअरकेस अक्षरों और अपरकेस क्रम में भी कर रहे हैं, क्योंकि वह कुछ के लिए उपयोगी है समस्या है. अली: अच्छी बात है, लुकास. तो, आप लोग सब था कि मिलता है? 11 SPEAKER: हाँ. यही कारण है कि आप इसे कैसे करते हैं, है ना? अली: ठीक है. रोब: हाँ. 11 अध्यक्ष: [अश्राव्य] अली: ठीक है. रोब: सवाल क्या पूछ रहा है? बस कन्वर्ट करने के लिए - अली: अपरकेस के लिए लोअरकेस में कनवर्ट करना. बस. आरओबी: ठीक है. अली: हम इसे लिखना चाहिए? मुझे लगता है कि हम सिर्फ पर किसी और को देख लेंगे. रोब: तो जो लोग अटक जा सकता है, एक तरह के लिए - अगर मैं कुछ चार ग है, और हम कहते हैं कि यह पत्र होना होता है डी. तो अब मैं बाहर कैसे आंकड़ा वर्णमाला सी के पत्र क्या है? डी नहीं है, लेकिन मेरा मतलब है, विकास के लिए वर्णमाला के चौथे पत्र होना होता है. और अगर हम 0 से गिनती शुरू, तो यह वर्णमाला के तीसरे पत्र है. तो अगर एक 0, बी 1, सी 2 डी 3 है, मैं बाहर कैसे int स्थिति समझ सकते हैं - वर्णमाला सी की स्थिति क्या है? क्या किसी को कोई विचार है? अली: मुझे लगता है कि वे सब कोडिंग कर रहे हैं. रोब: पहले एक के बारे में क्या? 12 अध्यक्ष: तो जो कुछ भी है, पहले एक घटाना? रोब: हाँ. अली: हाँ, भयानक है. तो आप राजधानी डी कर सकता है - ओह, माफ करना. तुम चरित्र लेने और आप पहले एक घटाना, के रूप में आपने कहा था. रोब: डी तो अगर 68 की तरह कुछ है, और हम एक, जो 65 घटाना है, तो हम 3, हमें बता रही है कि डी वर्णमाला के तीसरे पत्र 0 से शुरू. तो तुम उस का उपयोग कर सकते हैं. अब हम क्या वर्णमाला के के मामले में, पत्र पता पूंजी, या पत्र - हम लोअरकेस अक्षरों के लिए एक ही बात करने के लिए बाहर क्या समझ सकता है स्थिति हम अंदर हो लोअरकेस और हम का उपयोग कर सकते हैं कि तो कन्वर्ट करने के लिए है कि एक का उपयोग कर अपरकेस बहुत इसी तरह के विचार. सुझाव के लिए पूछना? अली: तुम लोगों को क्या - रुको, मैं नहीं जानता कि कैसे दूर आप लोग कर रहे हैं. क्या आप किया है, तो आप अभी भी काम कर रहे हैं, तो आप फंस रहे हैं? तुम लोग बाहर चिल्लाओ कर सकते हैं - अटक गया. एक व्यक्ति अटक गया है. कूल. मैं करने के लिए अटक भी करते हैं. 13 अध्यक्ष: मैं कर रहा हूँ. अली: आप कर रहे हैं? ठीक है. हो गया. 13 SPEAKER: [अश्राव्य] अली: हाँ, शांत. आप की जाँच कर रहे हैं कि यह लोअरकेस रूप में है? ठीक है, शांत,. अन्य लोगों कहाँ हैं? क्या आप इस संकेत के रूप में अपने आप को संयुक्त राष्ट्र के चिपके के लिए मदद? 14 अध्यक्ष: नहीं, वास्तव में, लेकिन सिर्फ इसलिए कि मैं नहीं जानता कि, मैं नहीं हूँ अभी तक इसे पचाने के. अली: ठीक है, शांत,. क्या तुम कोशिश करना चाहते हैं - या तुम जाओ और बात करना चाहते हैं? रोब: मैं कहने जा रहा था क्या है - तो इस का उपयोग कर. क्या आप समझते हैं कि हम कैसे वर्णमाला की क्या स्थिति पत्र में है? 14 अध्यक्ष: ठीक है, इसलिए जब आप एकल उद्धरण में बातें करना कि एक संख्या देता है? रोब: हाँ. यह ASCII मान का प्रतिनिधित्व करता है यह अनुवाद किया जाएगा. तो आप ASCII तालिका या जो भी यह है के लिए जाना चाहते हो? अली: बस इनमें से एक है? रोब: हाँ. तो जब आप इन प्रतीकों के किसी भी डाल, का एक बहुत की अनदेखी - अली: [अश्राव्य] आरओबी: ओह, कर्सर का उपयोग. अली: हाँ. यह रोमांचक था. आरओबी: तो, छोड़ दिया है, जो विशेष प्रतीक हैं पर इन लोगों की अनदेखी अगर आप एकल उद्धरण में इन प्रतीकों के किसी भी डाल दिया, तो यह हो जाएगा बाईं तरफ इस मूल्य के लिए अनुवाद. अली: यह इसके लिए दशमलव संख्या है. यह 65, बी 66 के साथ एक मैच की तरह है, और तुम नोटिस हूँ कि वे सभी कर रहे हैं वर्णमाला क्रम है, जो एक फर्क पड़ता है. तो, जैसा कि रोब कहते हैं, इससे पहले कि कोड में, हम से दूरी की गणना रहे थे पहले अक्षर, प्रति से. और कहा कि एक ही हो सकता है, चाहे वह अपरकेस या लोअरकेस है. आरओबी: तो जब हम 65 ए, डी, 68 ऋण था, हम 3 मिलता है. क्योंकि विकास वर्णमाला में तीन पदों है. अली: तो फिर तुम कैसे अनुवाद कि छोटे से अधिक को खोजने के लिए चाहते हैं? रोब: हाँ. तो अगर मैं अब 3 है, मुझे पता है कि मैं तीन अक्षरों जाना चाहते हम लोअरकेस जा रही हो अब नहीं होगा, लेकिन हम कहते हैं कि मैं तीन से जाना चाहते हैं चीजों की लोअरकेस पक्ष में पदों. तो मुझे लगता है कि कैसे कर सकते हैं? मैं जानता हूँ कि एक 97 लोअरकेस. तो मैं कैसे लोअरकेस अक्षरों में तीन पदों पाते हैं? 15 अध्यक्ष: मैं एक सवाल वास्तव में है. अली: हाँ, आगे बढ़ो. 15 अध्यक्ष: तो इस के लिए, यह वास्तव में अगर मैं इस स्थिति पता नहीं फर्क नहीं पड़ता, की तरह, मैं इस तालिका जरूरत नहीं है. आरओबी: नहीं. आप इन नंबरों में से किसी का उपयोग करने की जरूरत नहीं होगी. और यह अपने कार्यक्रमों में एक महत्वपूर्ण बात यह है कि आप कठिन कभी नहीं करना चाहिए इन अचरों के किसी भी कोड. 'ए' का प्रयोग करें. 65 या 97 का उपयोग कभी नहीं. अली: उन जादुई संख्या कहा जाता है, और वे वास्तव में भ्रमित कर रहे हैं. की तरह, जब आप एक कोड debugging कर रहे हैं, तो आप क्या याद नहीं कर सकता आप उनके लिए इस्तेमाल किया. और हमें अपने कोड ग्रेडिंग के लिए, हम वास्तव में नहीं पता चल जाएगा कि क्या आप उनके लिए प्रयोग कर रहे हैं. तो यह बेहतर होगा यदि आप वास्तव में वर्णों का उपयोग तो यह अधिक लोगों को समझ में. ठीक है, किसी भी अन्य प्रश्न? क्या और अधिक लोगों को किया है, या - मुझे लगता है कि हम जांच कर सकते हैं. यह वास्तव में डरावना है कि आप लोगों के कोड देख सकते हैं. रोब: हाँ. हम है कि यहाँ नहीं है. हम लोगों के नाम पता नहीं है, या तो. अली: ओह, हाँ, अच्छी तरह से है कि यह बेहतर बनाता है, तो हम और भी अधिक निष्पक्ष हो जाएगा के बजाय सिर्फ बेतरतीब ढंग से किसी को उठा. चिंता मत करो. मैं ऐसा नहीं करेंगे. कोई बात नहीं यदि आप यादृच्छिक चीजों के बारे में है. ठीक है. लोगों को कैसे कर रहे हैं? 17 अध्यक्ष: तो 9 रेखा के बाहर एक चरित्र प्रिंट चाहिए? रोब: हाँ. अली: हाँ. तो अगर आप नीचे जाने - आरओबी: ओह, ऐसा नहीं कर सकते. अली: आप देखेंगे कि यह हैश प्रतीक मुद्रित. 17 अध्यक्ष: ओह, ठीक है. रोब: मुझे लगता है कि एक और तरीका है आप चीजों को देख सकते हैं कि हम दो मुद्रण कर रहे हैं वर्ण. एक प्रथम पत्र हम मुद्रण कर रहे हैं ए है हम मुद्रण कर रहे हैं कि अगले एक 65 बस है. यह शायद इन के लिए मुझ पर चिल्लाना होगा. तो अगर हम सिर्फ इस चलाने के लिए, तो आप देखेंगे कि यह दोनों एक बार प्रिंट. क्योंकि हम इसे एक ही बात पूछ रहे हैं. हम यह पूछ रहे हैं पत्र ए प्रिंट और फिर हम यह मुद्रित करने के लिए पूछ रहे हैं 65 संख्या एक चरित्र है, जो एक ही बात है के रूप में व्याख्या की है. अली: क्या आप कुछ कहना है? ओह, बस मजाक कर रहे है, माफ करना. सब ठीक है, कैसे लोगों को कर रहे हैं - आरओबी: हम सिर्फ यह माध्यम से चल सकता है. अली: ठीक है, तो कैसे आप शुरू करते हैं? कोई है? एक संकेत के रूप में, हम लोगों से typers से कुछ पाने के लिए है. 18 SPEAKER: [अश्राव्य] अली: ओह, हाँ, एक शीघ्र सही है,. इसलिए हम टाइप करेंगे - हम किस प्रकार करते हैं? कोई है? या मैं बस यह टाइप करना चाहिए? - क्या हम वास्तव में टाइपिंग आरओबी: बिल्कुल. अली: तो हम एक तरह से यह prompt printf टाइप करें, तो हम हो सकता है पसंद है, मुझे एक चरित्र दे. ठीक है, और फिर क्या? ऐसा क्यों कर रही है? रोब: मुझे नहीं मालूम. अली: ठीक है. तो अब, हम उन्हें कह रहे हैं कि हमें एक चरित्र दे. लेकिन तब आप वास्तव में कैसे है कि चरित्र मिलता है? 19 अध्यक्ष: उपयोग GetString. अली: GetString? Getchar? ठीक है, तो एक स्ट्रिंग और एक चार के बीच क्या अंतर है? 19 SPEAKER: तार एक श्रृंखला वर्णों की एक सरणी की तरह कर रहे हैं. अली: कूल, हाँ. तो इस समस्या में, हम केवल एक समय में एक चरित्र पर विचार करने की जरूरत है, तो हम केवल कि उदाहरण के लिए getchar करने जा रहे हैं. रोब: हम एक समारोह को लागू करने के लिए अगर हम चाहते थे कि एक पूरे स्ट्रिंग लिया और स्ट्रिंग पर चला गया और अपरकेस और सभी के लिए सभी लोअरकेस बदल लोअरकेस अपरकेस. लेकिन यहाँ, हम सिर्फ एक चरित्र के लिए कर रहे हैं आप पूछ रहे हैं. अली: तो अब हम पात्र यहाँ है, लेकिन फिर हम इसे बचाने की आवश्यकता है. तो फिर हम चार ग जोड़ देंगे क्या? 20 SPEAKER: चर परिभाषित करें. अली: हाँ, बिल्कुल. तो हम हमारे चरित्र है. रोब: मुझे लगता है कि आप हो सकता है - आप केवल तीन रिक्त स्थान में हो, जो कारण है कि यह तुम पर चिल्ला रहा है. अली: ठीक है, शांत, अब है कि हम सेट tabbing है कि आगे क्या होता है? अगला कदम क्या है? रोब: हमारे कार्यक्रम क्या करना चाहिए है एक के लिए एक छोटा अक्षर बदल पत्र अपरकेस. क्या होगा यदि मैं हैश प्रतीक दर्ज हुआ? यह है कि - अली: यह एक अच्छा प्रतीक है. हम इसे एक बहुत का उपयोग करें. रोब: यह है कि एक वैध बात मैं एक अपरकेस प्रपत्र को परिवर्तित कर सकते हैं? 21 अध्यक्ष: नहीं अली: नहीं. हम जानते हैं कि जांच होनी चाहिए. तो हम एक हो सकता है अगर बयान तो जाँच अगर ग से अधिक है या 'लोअरकेस a'के बराबर - तो अगर हम चार्ट को देखो, तो आप देखेंगे कि यह यहाँ के बीच हो गया है, 97 और लोअरकेस एक. और यह इनमें से कोई भी हो सकता है, कर सकते हैं और वेतन वृद्धि में सभी तरह से नीचे. और फिर वहाँ 122 में z है. और यह इन दोनों के मूल्यों के बीच गिर गया है. क्या इसका यह मतलब है? आरओबी: तो अगर ग 97 और 122 के बीच में नहीं है - या आप उन लोगों की संख्या का उपयोग करने की जरूरत कभी नहीं करना चाहिए - अगर ग 'एक' और के बीच नहीं है Z ',' तो यह एक करने के लिए हमें अपरकेस मान्य वर्ण नहीं था. अली: तो कोड के रूप में, हम कहते हैं कि अगर ग से अधिक या एकल के बराबर है मामले लोअरकेस - वाह, आप कहते हैं कि कैसे किया? ठीक है, अधिक से अधिक या लोअरकेस 'एक' के बराबर है, और यह करने के लिए ऊपर हो गया है z लोअरकेस '.' तो यह कम से कम या बराबर करने के लिए 'जेड' लोअरकेस होना है. हमें यकीन है कि यह दोनों के बीच कर रहे हैं. फिर हम पर हमारे खुश कोड के साथ जारी रख सकते हैं. क्या? रोब: तो मुझे लगा कि हम सिर्फ पूछ रखना होगा, अगर हम एक नहीं होगा पत्र लोअरकेस. अली: ओह, मैं उस के बारे में पता नहीं था. माफ़ कीजिए. ठीक है, यदि ऐसा है तो हम जा रहे हैं के रूप में रोब कहते हैं, और सुनिश्चित करें कि - हम उन्हें पूछ रख सकते हैं, तो हमें क्या करना चाहिए? 22 SPEAKER: [अश्राव्य] रोब: हाँ. हम लूप के कुछ प्रकार का उपयोग करना चाहिए. क्योंकि उपयोगकर्ता एक अनकही राशि के समय अमान्य कुछ दर्ज कर सकते हैं. तो आप एक समय पाश का उपयोग कर सकते हैं. है, जबकि एक पाश के उद्देश्य - सचमुच, अपने पूरे जीवन में केवल समय आप कभी नहीं - का उपयोग करेगा जबकि loops जब आप उपयोगकर्ता इनपुट के लिए पूछ रहे हैं. तो सच है कि हम उपयोगकर्ता इनपुट के लिए पूछ रहे हैं यहाँ एक संकेत है कि हम चाहिए है, जबकि एक पाश का उपयोग करें. और क्यों है? क्योंकि करते हैं जबकि पाश हमेशा कम से कम एक बार होता है. तो जब आप उपयोगकर्ता इनपुट के लिए पूछ रहे हैं, आप चाहते हैं कि कम से कम एक बार ऐसा करने के लिए. और फिर अगर कुछ सफल रहे थे, तो आप जा रहा रख सकते हैं. यदि नहीं, वापस जाओ और फिर से पूछो. अली: तो दूसरे शब्दों में, हम करने के लिए खंड करना है. और इसलिए यह कह रहा है कुछ करना है. तो printf - प्रिंट बयान, शीघ्र, और भी चरित्र मिलता है, या करने के लिए प्रयास एक चरित्र मिलता है. और फिर हम जाँच करने के लिए अगर यह वास्तव में यह सही ढंग से किया है. तो फिर हम शर्तों को जोड़ने के लिए, तो हम करते हुए कहते हैं, और फिर हम सशर्त बयान. आरओबी: लेकिन अब हम सोचा की ट्रेन उलट है. अब हम मूल रूप से कह रहे थे कि अगर ग इस श्रेणी में है, यह वैध है. अब हम है कि रिवर्स चाहते हैं और कहते हैं कि अगर ग इस श्रेणी में नहीं है, हम तो बातें करने के लिए फिर से करना वापस चाहिए. अली: ओह, हाँ. रोब: तो, जबकि यह सच नहीं है, हम वापस जाने के लिए और चाहते हैं एक और चरित्र के लिए पूछना. क्या हर कोई देख रहे है? इस पर सवाल? ठीक है. तो अब हम एक वैध चरित्र है कि हम अपरकेस कर सकते है. अली: तो फिर क्या यह uppercasing के लिए अगले कदम है? 23 SPEAKER: 32 जोड़ें. अली: आप जोड़ सकते हैं - खेद है, क्या? 23 अध्यक्ष: आप सिर्फ 32 नहीं जोड़ सकते हैं? रोब: तो हाँ, जादुई संख्या के मामले में नहीं. आप केवल एकल बोली सामान का उपयोग किया जाना चाहिए. 23 अध्यक्ष: ठीक है, ठीक है - रोब: लेकिन आप 32 प्राप्त कर सकते हैं - अली: आप कैसे मिला संख्या 32 है, मुझे लगता है, हम क्या कह रहे हैं. 23 SPEAKER: [अश्राव्य] आरओबी: तो हम संख्या 32 एक साथ के साथ आ सकता है - 23 अध्यक्ष: [अश्राव्य?] रोब: हाँ. लेकिन अगर हम इसे दो चरणों में करने जा रहे हैं के साथ हम पहले किया था स्थिति सामान. तो वर्णमाला कि ग के लिए होता है में स्थिति ग ऋण लोअरकेस है 'एक'. तो अगर हम एक छोटे 'घ' में प्रवेश किया, स्थिति के लिए 3 होने जा रहा है. और अब हम चीजों की अपरकेस श्रृंखला के लिए चीजों को ले जाना चाहता हूँ. तो अब हमारे नए ग राजधानी 'ए' प्लस स्थिति होने जा रहा है. तो लोगों को देखते हैं कि कैसे हमें लाता है - हम लोअरकेस सीमा से बढ़ रहे हैं, सटीक गहराई हम उस में थे रेंज, और अपरकेस रेंज में नीचे जा रहा है, और है कि दूर जा रहा है इसे में फिर से है, जो एक ही चरित्र हो जा रहा है, लेकिन अब uppercased. अली: और लोगों को कि कैसे से उलझन में थे के लिए वह सिर्फ 32 ने कहा, मूल रूप से वह एक बयान में इन दोनों के संयुक्त. तो यह लिखने के लिए कहते हैं कि तुम बस की तरह कर सकते हैं के एक बराबर तरीका विकल्प की स्थिति, ग घटा ',' और यह सही यहाँ डाल दिया. तो उसने क्या किया, मैं नहींं - चार newc = अपरकेस 'ए' प्लस ग शून्य 'एक' लोअरकेस. और क्योंकि बीजगणित, आप उन्हें चारों ओर स्थानांतरित कर सकते हैं. आप यह भी कह सकते हैं कि आप यह कदम के आसपास इतना चार newc = अपरकेस 'ए' कर सकते हैं शून्य से 'एक' प्लस ग लोअरकेस. और यह, तुम अगर हम चार्ट पर वापस जाने के लिए नोटिस देंगे. हम अपरकेस एक 65 और एक 97 लोअरकेस है. तो 65 - 97 -32 है. हाय. एक सीट ले लो. ओह. तुम यहीं बैठ सकते हैं. शांत, ठीक है, भयानक. अनुभाग में आपका स्वागत है. आप देखेंगे कि अंतर 32 है. तो है कि वह कहाँ है कि नंबर मिल गया. लेकिन यह, के रूप में रोब कहते हैं नहीं है, सबसे अच्छा तरीका यह करना है, क्योंकि यह अजीब है जादुई संख्या भ्रम. रोब: आप पूंजी का उपयोग ऋण एक लोअरकेस चाहिए. तुम बस सीधे 32 का उपयोग नहीं करना चाहिए. 24 अध्यक्ष: ऐसा क्यों है, फिर? तुम क्यों उपयोग 32 नहीं होना चाहिए? अली: अगर हम यह किया है, यह चार होगा = newc -32 + ग. और अगर आप इसे के बाकी के किसी भी नहीं देखते हैं, अगर यह सब चला गया है, तो आप और सिर्फ इस एक लाइन देखते हैं, तो आप कैसे जानते हैं नकारात्मक 32 क्या है? यह सिर्फ जगह से बाहर है. रोब: तो अपने कार्यक्रम को पूरी तरह से ठीक काम करेगा. यह सिर्फ एक शैली बात है. किसी में जा रहा है और अपने कोड को पढ़ने, वे 32 क्या मतलब है की तरह कर रहे हैं? शायद वे नहींं - शायद मैं तुरंत है कि 32 के लिए होता है एहसास नहीं होगा हालांकि एक लोअरकेस अक्षर और एक अपरकेस अक्षर के बीच का अंतर, हम अगले समस्या है कि वास्तव में उपयोग करने के लिए जा रहे हैं. 32 - आप यह 32 कह ऊपर एक टिप्पणी को छोड़ सकता है के बीच अंतर है 'ए' और 'एक.' लेकिन उस बिंदु पर, 'ए' और 'एक', तुम और क्यों बस का उपयोग नहीं टिप्पणी की जरूरत नहीं है. अली: यह है कि बस के ऊपर तरीके एक बहुत क्लीनर, शैली के लिहाज से कर रहे हैं. और हां, प्रोग्रामिंग के बाद आप अभी शुरुआत कर रहे हैं - मन कभी नहीं या मैं के बाद आप हैकर ईडीआई हो नहीं लगता है. यह सिर्फ एक अच्छा तरीका है - यह बेहतर है बेहतर शैली है. यह आसान करने के लिए अन्य लोगों को पढ़ने के लिए है. रोब: आप ASCII तालिका याद की जरूरत कभी नहीं, कभी चाहिए. तुम सिर्फ एकल बोली अक्षर का उपयोग करने में सक्षम होना चाहिए. प्रश्न? अली: अच्छा हर कोई है? आरओबी: ठीक है. तो अगली समस्या पर्याप्त है. तो अगली समस्या हमें पूछता है - अली: हमें अगले समस्या के लिए पूछ रहा है के लिए एक ही बात कर सकते हैं, लेकिन उपयोग करने के लिए बिटवाइस ऑपरेटरों. रोब: और बेशक, हम बिटवाइस ऑपरेटरों अभी तक नहीं देखा है. तो अब हम उन पर चर्चा करेंगे. अली: होने के लिए उत्साहित है. वे सुपर मज़ा कर रहे हैं. रोब: तो x प्लस y, ऋण, बार, विभाजन की तरह नियमित रूप से ऑपरेटरों,. अली: यह इस प्रांप्ट में टाइप करें. रोब: वहाँ भी%, अगर आप इसे नहीं देखा है, जो आपके द्वारा उपयोग कर सकते हैं प्रतीक प्रतिशत. लेकिन हम उन लोगों के इस समस्या के लिए उपयोग नहीं करेगा. हम bitwise ऑपरेटरों का उपयोग करने के लिए करना चाहते हैं. अब याद है, हम इसे एक व्याख्यान में लाया. मुझे यकीन है कि अगर हम से परे है कि बाइनरी चर्चा की है नहीं कर रहा हूँ. लेकिन याद रखना कि हर एक संख्या का प्रतिनिधित्व किया जाता है - सब कुछ अच्छी तरह - द्विआधारी में 1s और 0s में प्रतिनिधित्व किया. तो इसका मतलब है कि जब मैं 8 नंबर का कहना है, मुझे पता है कि वह है, होता है की तरह, 1000. क्या bitwise ऑपरेटरों हमें इन बिट्स पर संचालित कर - इन बिट्स पर सीधे काम. अब मैं अब आठ के मामले में काम कर रहा हूँ. मैं 1000 के मामले में काम कर रहा हूँ, और मैं उन लोगों के साथ काम करना चाहते हैं व्यक्तिगत बिट. तो अली बिटवाइस ऑपरेटरों लिखा है यहाँ, लेकिन that's - संख्या 8 हम एक हमारे उदाहरण संख्या के रूप में इस्तेमाल करेंगे. और द्विआधारी प्रतिनिधित्व 1000 है. हम दूसरे नंबर 5 का उपयोग करेंगे - वास्तव में 9 और 5 का उपयोग. और 5 के द्विआधारी प्रतिनिधित्व 00 है - 0101. अली: सब उस पर अच्छा है? बाइनरी सामान? यह पहला व्याख्यान से हुई थी? रोब: तो भी अगर आप पूरी तरह से की चोटी पर नहीं कर रहे हैं कि कैसे चीजें कन्वर्ट करने के लिए बाइनरी है, कि इस समस्या के लिए पूरी तरह से महत्वपूर्ण नहीं है. हम इसे का उपयोग किया जाएगा, लेकिन आप कई और अधिक संभावना को बाहर निकालने के लिए कैसे होगा जल्दी बाइनरी में बातें बारी. तो 9 और 5 का उपयोग करते हुए, अब हम अपने बिटवाइस ऑपरेटरों है. ओह, और यह भी, 9 और 5, अगर यह एक पूर्णांक है, तो वास्तव में यह 32 बिट है, जिसका मतलब है कि हम 0, 0, 0 0, समय की एक बहुत की तरह है, तो बहुत अंत पर 101. कि सिर्फ इसलिए कि, कोई फर्क नहीं पड़ता कि तुम क्या करते हो integers में, 32 बिट. सिर्फ इसलिए कि हम केवल चार बिट की जरूरत है 9 का प्रतिनिधित्व करते हैं इसका मतलब यह नहीं है कि हम नहीं कर रहे हैं बस 0 के लिए अन्य 27 बिट का उपयोग. अली: बस स्पष्ट करने के लिए, एक इन नंबरों में से एक है कि एक 0 या 1 एक एक सा है. यह एक 4 बिट है. इतनी के रूप में रोब ने कहा कि मशीनों उन्हें 32 में स्टोर. तो फिर वे 32 या तो एक 0 या 1 एक करना होगा. अच्छा है? आरओबी: बिटवाइस ऑपरेटरों. 1 एक है कि हम साथ सौदा होगा, चलो करते हैं और. तो अगर हम करते हैं 9 और 5. तो थोड़ा थोड़ा करके और क्या करता है, यह दो संख्याओं के टुकड़े की तुलना और अगर संख्या के दोनों कर रहे हैं 1, तो यह एक 1 वापस आ जाएगी. यदि एक एक 0 और 1 अन्य, या दोनों 0s हैं, तो यह एक 0 देता है. तो आप इसे अपने तार्किक ands के रूप में सोच सकते हैं. आप की तरह सच है और सच सच वापसी की जरूरत है, लेकिन सच है और झूठी झूठी है. तो यह एक ही बात है, लेकिन अब हम इसके साथ बस बिट्स के साथ काम कर रहे हैं. अली: तो अगर आप इस पर देखो, तुम 1 होगा - आप उन्हें लाइन अप कर देंगे, तो यह हो जाएगा 1 और 0. क्या तुम लोगों को लगता है कि हो जाएगा - क्या है कि मूल्यांकन करने के लिए किया जाएगा? 25 SPEAKER: 1. अली: कूल. या नहीं. माफ़ कीजिए. तो यह है कि समझ में आता है? तो सामूहिक जवाब फिर क्या है? माफ़ कीजिए. तो अगर हम 1 और 0 है, तो आप क्या मिलता है? आरओबी: तो आपको लगता है कि आप कैसे कह सकते और ज़ोर से. यदि आप दो टुकड़े हैं, एक्स और वाई, एक्स और वाई 1 होने के लिए की जरूरत है, इसके लिए आदेश में सच करने के लिए मूल्यांकन या क्रम में के लिए यह 1 का मूल्यांकन करने के लिए. यदि एक्स या वाई 0 हैं, तो यह झूठी या 0 का मूल्यांकन करने के लिए है. लुकास: यह अच्छा है यह भी याद है कि एक सच है और 0 झूठी है. तो अगर आप सच और झूठ है, यह गलत है. लेकिन फिर भी, और सच सच, सच है. झूठा और झूठी, झूठे. अली: हम सच और झूठी है. तो 1 और 0. तो फिर, माफ करना, एक और अधिक समय? 25 अध्यक्ष: यह 0 होगा. हाँ, शांत,. और फिर हम 0 और 1 - 25 अध्यक्ष: [अश्राव्य] अली: हाँ. तो आप उन्हें हमेशा में स्वैप कर सकते हैं - तो अगर आप 0 और 0 है? 4 अध्यक्ष: 1? 0? आरओबी: तो यह 0 है. ऐसा नहीं है कि दोनों की संख्या के लिए ही होना चाहिए. ऐसा लगता है कि दोनों की संख्या 1 होने की जरूरत है. अली: तो दोनों के लिए सच हो सकता है के लिए यह सच हो. तो यह है कि 0 है. और फिर तुम 1 1% है, जो है? रोब: बहुत अच्छी संख्या हैं. वे सब संभव है - अली: अच्छा काम, वाह. ठीक है, शांत,. इतना है कि हर किसी के लिए कोई मतलब है? रोब: तो अब हम क्या करेंगे. और यह बहुत ही इसी तरह की हो जा रहा है, लेकिन अब के बजाय एक्स और वाई के लिए की आवश्यकता होगी 1 क्रम में हो सकता है के लिए यह एक करने के लिए मूल्यांकन करने के लिए, अब यह सिर्फ है एक्स या y 1 की जरूरत है. अली: तो 1 | 0 का मूल्यांकन करने के लिए - वर्ग: 1. अली: कूल. 0 | 1 का मूल्यांकन करने के लिए - वर्ग: 1. अली: अच्छा है, और फिर 0 | 0 - वर्ग: 0. अली: हाँ, और फिर 1 | 1 - वर्ग: 1. अली: कूल. तो यह है कि दो बिटवाइस ऑपरेटरों की तरह है. बहुत बढ़िया. आरओबी: तो अब हम ^ करूँगा. अली: हम उन सभी को करना चाहिए? रोब: हाँ, क्योंकि मुझे लगता है कि हम इसका इस्तेमाल करने के लिए जा रहे हैं - उन सब का उपयोग. अली: ठीक है. तो - रोब: मुझे लगता है कि हम करने की जरूरत नहीं है. अली: तो ^ काम करता है कि आप एक बिल्कुल सच है और एक गलत किया है. ^ विशिष्ट मतलब है या. तो अब यह नहीं है - अगर एक्स और वाई दोनों 1 हैं, यह अब झूठी है. ^ के बीच अंतर है और | है, कि या, आप कर सकते हैं, यदि x सच है या y सच है, तो हम अच्छा कर रहे हैं. नहीं, ^ का कहना है कि अगर x सच है, y झूठी होना चाहिए, या फिर यह सच नहीं है. क्या आप में एक सवाल है? 26 SPEAKER: [अश्राव्य] अली: हाँ. यह इसी तरह की तरह है. रोब: हाँ, इसलिए जब आप कम स्तर है कि हार्डवेयर सामान के लिए मिलता है, ये हैं आपरेशन के प्रकार आप के साथ काम कर रहे हैं. हार्डवेयर स्तर पर, आप केवल बिट के साथ सौदा होगा. आप संख्या के साथ सौदा नहीं है. अली: ठीक है, ^ के लिए, या यदि आप 1 है ^ 0, क्या है कि करने के लिए मूल्यांकन किया जाना चाहिए? वर्ग: 1. अली: कूल. यदि आपके पास ^ 0 1? वर्ग: 1. अली: कूल. ^ 0 0? कूल. और फिर 1 1 ^? वर्ग: 0. अली: शांत, भयानक है. अगले एक - रोब: मुझे लगता है कि ये हम सब के साथ सौदा कर रहे हैं. हम केवल इन करूँगा. केवल समय हम करना होगा: अली आरओबी: ओह, कि पिछले समस्या के लिए किया जाएगा. 27 अध्यक्ष: रुको, एक बार फिर से? अली: क्षमा करें, आपके सवाल क्या था? 27 अध्यक्ष: आपको लगता है कि एक बार फिर से व्याख्या कर सकते हैं? ^? 27 अध्यक्ष: Exclus - हाँ. अली: तो क्या विशेष या इसका मतलब यह है कि वहाँ के लिए विशेष रूप से हो गया है एक सच है और एक झूठी, तो एक 1 और एक 0, बनाम के साथ या, आप कर सकते हैं - उनमें से एक के लिए सच हो गया है, या उन दोनों के लिए यह सच हो सकता है को सच करने के लिए मूल्यांकन. 27 अध्यक्ष: तो 0 और 0 झूठी होगा. अली: हाँ. लेकिन अगर आप 1 है | 1, यह सच का मूल्यांकन होगा. लेकिन अगर आप 1 1 ^ है, के रूप में हम किया था, जो गलत मूल्यांकन करता है. क्योंकि यह विशेष रूप से नहीं है एक सच है. रोब: और यह हो सकता है या, हो सकता है उपयोगी नहीं है, लेकिन सूचना है कि ^ | बस लेने के लिए बराबर ऋण और. और आप वास्तव में इसे इस तरह के बारे में सोच सकते हैं. ^ बस सब कुछ एक साथ oring लेकिन बाहर बिट्स के किसी भी लेने से जहां दोनों सही थे. तो और जहां दोनों सही थे सब कुछ देता है. | जहां एक या दोनों सही थे सब कुछ देता है. तो उस से घटाकर | आप ^ देता है. अली: कोई सवाल? यह जानकारी का एक बहुत था. अच्छा सब लोग? रोब: स्लेश हम अगले लोगों पर अगले समस्या के लिए जा सकते हैं, समय यह क्या है? वे यह अगले समस्या जब तक जरूरत नहीं है. अली: मैंने सोचा था कि यह इस एक था. रोब: ऐसा नहीं है. अली: तुम्हें यकीन है? रोब: हाँ, मैं सकारात्मक हूँ. अली: हम अगले समस्या कर क्यों नहीं शुरू करते हैं? समस्या है, फिर से, यह अपरकेस लोअरकेस से बदल, और इस bitwise ऑपरेटरों का उपयोग करने के लिए समय है. रोब: तो हम करेंगे - चलो 'ए', राजधानी 'ए' द्विआधारी प्रतिनिधित्व के साथ शुरू करते हैं, जो 65 है. तो द्विआधारी में - तो 'ए' = 65 है, जो बाइनरी में = - मैं 0s की संख्या गड़बड़ करने के लिए जा रहा हूँ कि. अली: तो क्या है कि हर कोई समझ बनाने के लिए? तो, 1, कोई 2s, कोई 4s, 8s नहीं, नहीं - कोई -16, कोई 32s, और फिर एक 64. रोब: हाँ, मुझे लगता है कि एक भी कई 0s. अली: क्षमा करें. रोब: ठीक है, तो हम 64 सेट है, और हम एक सेट है, और उन के संयोजन एक साथ, हम 65 मिलता है. अली: कूल सेम? रोब: तो अब, 'a'लोअरकेस 97 नोटिस - 97 और 65 के बीच क्या फर्क है? 28 SPEAKER: 32. रोब: हाँ. तो यह 32 है, जो अपने ही सा है तो, है कि 110001 होने जा रहा है. और यह करने के लिए सभी संभव वर्ण के लिए सच होने जा रहा है. तो अगर हम 'डी', जो 68 होने जा रहा है के बारे में सोचना, कि 1000011 होने जा रहा है. और फिर लोअरकेस 'घ' के लिए 68 प्लस 32 है, जो 100 है जो होने जा रहा है एक ही बात है कि यह था हो सकता है, बस flipping जा रहा है 32 फिर तो, 1100011. तो एक अपरकेस और लोअरकेस पत्र के बीच फर्क सिर्फ flipping है कि 32-bit स्थिति. 29 अध्यक्ष: यह 1000100 नहीं है? रोब: रुको, यह 100 है - मैं कुछ गलत किया. यह सच नहीं था. मैं सोच रहा था कि यह 3 के एक अंतर था, तो फिर मैं तो बस अटक गया अंत में 3 बाइनरी. यह सही होना चाहिए. अली: आपको धन्यवाद. कि ओर इशारा करते हुए बाहर के लिए अच्छा है. वह तेज था. सब ठीक है, कि लोगों को स्पष्ट? रोब: अपरकेस और लोअरकेस संस्करण के बीच अंतर है हमेशा सिर्फ 32 होने जा रहा है, और इसलिए यह हमेशा एक सा होने जा रहा है है कि दोनों के बीच परिवर्तन फ़्लिप किया जा जरूरत है. अली: तो उस मामले में, पूंजी एक और के बीच अंतर जानने के लोअरकेस एक अच्छी बात है. अपने कोड में नहीं है, लेकिन धारणात्मक कम से कम, यह अच्छा है. तो तुम लोगों को आगे जाने के लिए और कोड कर सकते हैं कि अब रिक्त स्थान में. या हम सिर्फ यह चर्चा करनी चाहिए? आरओबी: हम सिर्फ इस पर चर्चा कर सकते हैं. मुझे नहीं मालूम. तुम लोग कोशिश कर सकते हैं. एक बिट के लिए अपने आप को आपस में बात. हम आपको यह कोड का मौका दे दूँगा. [आवाज़ें INTERPOSING] अली: - शांत है 30 अध्यक्ष: यह हैकर कॉमेडी की तरह है. अली: हाँ, हम सिर्फ खबर कह रहे हैं, इसके माध्यम से जा रहा है. रोब: और हम वापस आ गए हैं. अली: यह अजीब तरह का है. मुझे लगता है जैसे हम एक CS50 खबर स्टेशन होना चाहिए लगता है, और हम कर सकते थे वास्तव में इस तरह बैठते हैं. हैकर समाचार: रोब. अली: हैकर 50 समाचार. अली: यदि आप भ्रमित कर रहे हैं कोई सवाल पूछने मुक्त महसूस करो. रोब: किसी को भी अटक गया है? अली: हाँ, यह एक अच्छी बात है. अली: रुको, तुम अपनी कुर्सी में फंस रहे हैं? ओह. मैं थोड़ा चिंतित था. आरओबी: क्योंकि मैं बस एहसास है कि हम चाहते हैं के लिए जा रहे हैं एक और बिटवाइस ऑपरेटर. अभी के लिए, चलो बस लोअरकेस अपरकेस परिवर्तित. अली: क्षमा करें, हर कोई उस घोषणा मिला? हम अपरकेस से लोअरकेस के लिए जाने के लिए जा रहे हैं. आरओबी: तो फिर हम लोअरकेस चर्चा करने के लिए उस के बाद सही अपरकेस हूँ. ओह, नहीं. हम में एक बग है, मुझे लगता है, जो हम को चलाने की कोशिश की कभी नहीं है. जो सिर्फ यह है कि चार ग लूप के बाहर घोषित किया जाना चाहिए, क्योंकि इसके दायरे पाश में प्रतिबंधित है. 32 अध्यक्ष: इस मामले में, यह एक नंबर का उपयोग करने के लिए गलत है? रोब: हाँ, आप की जरूरत नहीं है. अगर मैं तुम्हें गारंटी है कि पूंजी 'A'- या, लोअरकेस' एक 'ऋण पूंजी' ए ' बिल्कुल एक सा है कि, लेकिन आप 32 यह नहीं पता था - बातें बस के रूप में अच्छी तरह से काम अगर यह 16 बिट है कि रूप से फ़्लिप किया गया था थे - या नहीं, मुझे लगता है कि यह wouldn't - या 64 बिट से फ़्लिप किया, संभवतः रहे थे. लेकिन आप 32 का उपयोग करने की जरूरत नहीं होनी चाहिए. आप के बजाय 'एक' ऋण पूंजी 'ए' लोअरकेस इस्तेमाल कर सकते हैं. 32 SPEAKER: ठीक है. तुम क्या कर सकते हैं अगर आपको लगता है कि आप बहुत ज्यादा लिख ​​रहे हैं आप इसे परिभाषित कर सकते हैं शीर्ष पर. तो आप की तरह हो सकता है, अंतर int = 'एक ऋण राजधानी' ए 'लोअरकेस. और तो आप अंतर बजाय लिख सकते हैं. यह वैध है. लेकिन सिर्फ 32 नंबर का उपयोग कर तरह की है - 33 अध्यक्ष: हालांकि यह तथ्य यह है कि यह 32 बिट की वजह से है? अली: हाँ. रोब: हो सकता है - केवल गारंटी हम तुम बनाने की जरूरत है कि के बीच अंतर लोअरकेस और अपरकेस एक सा है. इससे कोई फर्क नहीं होना चाहिए कि यह 32 बिट है कि रूप से फ़्लिप किया है होना होता है. समय के विचार के लिए, हम इस पर जा रहा शुरू करेंगे. यह ठीक है अगर आप नहीं समाप्त कर दिया है. इसकी चिंता मत कीजिए. रोब: यह मानते हुए ग एक पूंजी पत्र है - हम मानते हैं ग एक पूंजी पत्र है नहीं है. हम जानते हैं कि - ग इस जबकि पाश के बाद एक पूंजी पत्र है करते हैं जबकि पाश. तो इसका मतलब है कि यह 'ए' इस तरह कुछ लग रहा है. तो अगर हम इस को लाना चाहता हूँ इस 'एक' के लिए 'ए' हम क्या करना की क्या ज़रूरत है? तो हम कैसे परिवर्तित बिट फ्लिप? अली: हम यह कैसे फ्लिप करते? आरओबी: तो हम जानते हैं हम 32 बिट फ्लिप करना चाहते हैं. तो यह है कि 'एक' शून्य 'ए' करना होगा, या हम 32 लिख सकता है, लेकिन - यह झकना, यह दूसरी तरह के आसपास है. अली: ठीक है तो रोब यहाँ कि संख्या की गणना कर रहा है, जादू संख्या 32. तो वह बाहर लग रहा है, जहां कि बिट फ्लिप क्षेत्र होगा. और फिर हम क्या जहां सवाल के निशान हैं रखा है? रोब: हम कि बिट कैसे फ्लिप करते हैं? अपरकेस पत्र के मामले में, यह एक 0 है, और हम एक 1 बनना चाहते हैं. 34 SPEAKER: |. रोब: हाँ. तो यह हमें कह रही है कि हम 'ए' ले. हम यह 0 के साथ oring कर रहे हैं - 1000 - और कहा कि = कि. अली: क्या है कि हर कोई समझ बनाने के लिए? हम इसे माध्यम से बिट द्वारा जा सकते हैं अगर आप चाहते हैं. 35 अध्यक्ष: आप [अश्राव्य]? अली: ऋण चिह्न कहाँ है? रोब: ओह, तो आप यहां क्या मतलब है? अली: ओह, हाँ. रोब: तो मुझे लगता है कि यह हमारे लिए है. हम 32 कह सकता है, और अब हम सिर्फ bitwise ऑपरेटरों का उपयोग कर रहे हैं. अली: हम जादुई संख्या पसंद नहीं है. हम ऐसा करने के लिए नहीं जा रहे हैं. इसके अलावा, मुझे लगता है कि हम सिर्फ एक bitwise ऑपरेटर का उपयोग करना चाहिए - 36 अध्यक्ष: यदि आप एक ^ का उपयोग करते हैं, तो आप 32 मिल जाएगा? 37 SPEAKER: हाँ, मुझे लगता है कि - रोब: हाँ आप होगा. अली: यह है कि तुम कैसे जाने के लिए यह किया होता राजधानी से लोअरकेस. अब किसी ने मुझे बता क्यों रोब मैं और शीघ्र बदल दिया और हम चले गए कैसे कर सकते हैं अपरकेस लोअरकेस से, के बजाय लोअरकेस अपरकेस के रूप में हम पहले किया था? क्या किसी को कोई विचार है क्यों कि और अधिक कठिन हो सकता है? रोब: तो हम क्या चाहते हैं - अली: हाँ, आगे बढ़ो. 38 अध्यक्ष: | ऑपरेटर ही वास्तव में जोड़ने के लिए अच्छा था. अली: हाँ, बिल्कुल. रोब: तो क्या हम लोअरकेस में करने के लिए मामले को अपरकेस चाहते है, इस 'a'परिवर्तित - इसलिए हम कुछ संख्या में यहाँ डाल चाहते हैं और कुछ ऑपरेटर का उपयोग इतना है कि यह आता है हम राजधानी ए के लिए हम अभी भी शायद रहे हैं 32 किसी भी तरह का उपयोग करते हुए, लेकिन अब कैसे करते हैं इसे पाने के लिए यह करने के लिए बाहर आ? ग - तो ओह, मैं अभी भी चाहते हैं कि - अली: तो अब अगर हम लोअरकेस से परिवर्तित कर रहे हैं फिर अपरकेस, हम तो ^ ऑपरेशन करते हैं, के रूप में आप लोगों ने कहा कि. रोब: वहाँ अन्य तरीकों से आप बातें कर सकते हैं कर रहे हैं. बिटवाइस ऑपरेटरों की एक बहुत अंत में बहुत आसानी से definable संदर्भ में किया जा रहा है अन्य बिटवाइस ऑपरेटरों की. तो मैं या सभी ^ का उपयोग नहीं जा रहा था, लेकिन ^ बिल्कुल ठीक काम. अली: ठीक है, तो हम पिछले समस्या है, जो बुनियादी है पर जाने के लिए जा रहे हैं - पिछले समस्या द्विआधारी में कुछ परिवर्तित करने के लिए है. तो, उदाहरण के लिए, आप 50 है, और फिर आप इसे परिवर्तित करने के लिए बाइनरी, जो 110010 है. और मुझे लगता है कि आप लोग सब से व्याख्यान द्विआधारी के बारे में पता है. और तुम भी इसे में किसी भी प्रमुख 0s डाल नहीं कर रहे हैं. आरओबी: अब आप के लिए उस भाग की उपेक्षा कर सकते हैं. पहले से गुजारें, तो आप इसे ऐसा करने के लिए कर सकते हैं कि वहाँ प्रमुख 0s हैं. और फिर हम कोई प्रमुख 0s को संशोधित करने के लिए, अगर हम समय कर सकते हैं. अली: तो उस के बारे में चिंता मत करो. बस बाइनरी में प्राप्त करने की कोशिश है. एक अच्छी जगह से शुरू होगा - रोब: हम एक पूर्णांक के लिए पूछने की जरूरत है. अली: अरे हाँ, यह एक अच्छा एक है. हम उस के साथ शुरू कर सकते हैं. तो तुम शीघ्र बदल सकते हैं. तो एक चरित्र के बजाय, अब हम integers के साथ काम कर रहे हैं. अच्छा है? रोब: और अब क्या है हमारे घर का, जबकि हालत के लिए होने जा रहा है? यह एक गैर नकारात्मक पूर्णांक के लिए पूछ रहा है. अली: जब हम कुछ और के लिए उपयोगकर्ता उत्साह रखना चाहते हैं? जब यह 0 से छोटा है. अली: ठीक है. आरओबी: जब मैं 0 से कम है. अली: अब हम इसे बदलने के लिए करना चाहते हैं. क्या तुम लोगों को क्या करने के लिए किसी भी विचार है? कोई inklings? हाँ. 39 अध्यक्ष: क्या हम इसे बदलने के लिए है, या हम सिर्फ कुछ 0s और 1s मुद्रित कर सकते हैं कि सही संख्या होगा? आप एक पाश के लिए कर सकते हैं और 2 की शक्तियों द्वारा बाहर गिनती? रोब: हाँ. आप के लिए मैं द्विपदीय बदलने की जरूरत नहीं - मैं द्विआधारी प्रतिनिधित्व मैं के अंदर फिट नहीं होगा. तुम बस करने के लिए मैं द्विआधारी प्रतिनिधित्व मुद्रित करने की जरूरत है. अली: दूसरे शब्दों में, आप दो की शक्तियों से जाने की जरूरत नहीं है. रोब: क्योंकि मैं पहले से ही binaries के रूप में संग्रहित किया जा रहा है, तो आप के लिए नहीं की जरूरत नहीं है यह द्विआधारी कनवर्टर के लिए इस्तेमाल किया जा सकता है. बस द्विपदीय पर चलते हैं, और यह प्रिंट. और तुम करने के लिए bitwise का उपयोग करने की आवश्यकता के लिए जा रहे हैं, क्योंकि आप में देखना चाहता हूँ वास्तविक बिट्स. आप को bitwise करने की जरूरत नहीं है, लेकिन कृपया. और वह वास्तव में है - आप दो की शक्तियों को 2 से गुणा करके कर सकते हैं. हम पिछले दो बाइनरी बिटवाइस ऑपरेटरों के ऊपर जाना होगा, जो इस एक है. तो जब आप ले - अली: आप उन दोनों के माध्यम से जा सकते हैं? रोब: हाँ. तो चलो 9 के साथ चलते हैं. तो 9 छोड़ दिया 1 पारी बदलाव का मतलब है छोड़ दिया है क्या बस छोड़ दिया करने के लिए सभी बिट्स ले जाने के लिए और एक 0 डालने. तो हम 9 के सभी बिट्स छोड़ एक करने के लिए आगे बढ़ रहे हैं स्थिति है, जो हमें देता है - सब कुछ तो हम स्थानांतरित कर दिया है नोटिस एक छोड़ दिया, और पर एक 0 डाला सही पक्ष. अगर हम स्थानांतरित कर दिया था दो द्वारा छोड़ा, हम दोनों के द्वारा छोड़ा सब कुछ बदलाव होगा, और दो अंतराल में भरने 0s सम्मिलित करें. प्रश्न? अली: तो फिर सही पारी को एक ऐसी ही बात करता है. यदि आप 9 सही बदलाव 1 है तो आप बस पर कर रहे हैं सब कुछ चलती है ठीक है, तो आप एक अंक है, तो 100 के बजाय खो देते हैं. आरओबी: तो तुम यह ठीक है कि आप थोड़ा खो रहे हैं कि सभी हुआ हो सही तरीके से. सही पारियों में से एक अलग प्रकार के हैं, लेकिन मूल रूप से आप के बारे में सोच सकते हैं सही 2 द्वारा सिर्फ विभाजित के रूप में पाली. और आप बाईं बदलाव के 2 से गुणा के रूप में सोच सकते हैं. तो अगर आप इस परिवर्तित - अगर आप 9 1 पाली, जो 10010 के बराबर है परिवर्तित, यदि आप वास्तव में चला गया बाइनरी के माध्यम से और पता लगा कि वह क्या था, यह सिर्फ 18 होगा. हम सिर्फ 2 से गुणा. 1001 छोड़ दिया बदलाव 2 से 36 होने जा रहा है. हम 4 से गुणा करें. ठीक है, शांत है, तो है, कि इस एक के लिए एक आसान बिटवाइस ऑपरेटर है. अधिक भ्रम? क्या तुम लोगों के लिए इसे बाहर की कोशिश करना चाहते हैं? या हम सिर्फ सही में कूद कर सकते हैं और इसे शुरू? रोब: हम शायद सही अंदर कूद चाहिए अली: हाँ, ठीक है. रोब: और इसके माध्यम से एक साथ चलते हैं. अली: ठीक है मैं बस में जाना होगा. तो के रूप में वह शुरुआत में कहा, हम तो बस थोड़ा थोड़ा करके के माध्यम से जा रहे हैं. तो हम एक पाश की जरूरत के लिए जा रहे हैं. क्या किसी को पाश की सबसे अच्छी तरह इस के माध्यम से जाने के एक विचार है? हम जबकि loops है, जबकि loops, loops के लिए. 40 अध्यक्ष: मत जबकि पाश? रोब: तो याद है कि मैं क्या पहले के बारे में कहा, हम करते हैं, जबकि केवल का उपयोग कर रहे हैं loops उपयोगकर्ता इनपुट पाने के लिए. तुम बहुत सुंदर कभी कभी कुछ और के लिए उन्हें का उपयोग करेगा. अली: के साथ समस्या है जबकि loops है कि यह कुछ भी करता है इससे पहले कि यह के लिए जाँच करता है हालत. इसलिए, यह कुछ बुरा कर सकता है - पसंद है, चोट - कुछ करना है कि संभव नहीं है. तो आप पहले की जाँच करना चाहते हैं. रोब: मामलों का एक बहुत तुम कहाँ है जबकि loops का उपयोग कर सकते हैं, लेकिन लोगों को आप उन्हें उपयोग करने के लिए जब तक यह उपयोगकर्ता इनपुट की उम्मीद नहीं है. तो हम इस्तेमाल किया है हमारे घर का जबकि पाश मैं पाने के लिए. कितनी बार हमारे पाश पाश चाहते जा रहा है? हम मैं के बिट्स की प्रत्येक पर पाश चाहते हैं. मैं कितने बिट्स में हैं? 41 SPEAKER: 32. अली: हाँ. आरओबी: तो वहाँ 32 बिट कर रहे हैं. हम 32 नहीं कहना चाहता हूँ. हम बजाय sizeof कहना चाहता हूँ - है, जो आपको लगता है कि अभी तक कक्षा में देखा है? अली: नहीं. रोब: यह का उपयोग क्यों कह रहे है - sizeof (int) 8 बार - अली: तो, sizeof 42 SPEAKER: [अश्राव्य] अली: दिलचस्प है. तो, sizeof में निर्मित एक सी समारोह है जहां यह सिर्फ आपको बताता है बिट्स की संख्या - आरओबी: बाइट्स. अली: बाइट्स, खेद - बाइट्स कि एक चर करने के लिए एक मूल्य की दुकान की संख्या. तो मुझे लगता है कि वह कक्षा में खत्म हो गया था, तो एक int 4 बाइट्स हो सकता है. अच्छा है? आरओबी: लेकिन आप जानते हैं कि एक int 4 बाइट्स की जरूरत नहीं होनी चाहिए. आप कहने के लिए सक्षम होना चाहिए - आप sizeof (int) का उपयोग करने के लिए 4 बाइट्स मिलना चाहिए. और कहा कि वास्तव में कुछ बातों के लिए महत्वपूर्ण है. एक int 4 बाइट्स नहीं हो सकता है. अन्य कंप्यूटर पर, एक int 8 बाइट्स हो सकता है. तो अपने प्रोग्राम है कि कंप्यूटर पर काम नहीं करेगा क्योंकि आप 32 हार्ड कोडित कि कंप्यूटर पर जब बिट 64 बिट के लिए होता है. अली: तो आप बिट्स कि आप यह रिवर्स करने के लिए करना चाहते हैं की कुल संख्या है. रोब: और एक बाइट और एक बिट के बीच अंतर यह है कि वहाँ एक बाइट में 8 बिट कर रहे हैं. Sizeof (int) इसलिए 4 बाइट्स देता है, तो हम उस गुणा 8 से 32 बिट पाने के लिए. अली: ठीक है, तो हम अधिक से अधिक जानते हैं और हम जानते हैं कि हम से जाना चाहता हूँ - हम उन सभी के माध्यम से जाना चाहते हैं. तो हम 0 से numBits के लिए जाना चाहते हैं. तो किसी को पता नहीं है कि कैसे उस के लिए लूप लिखने के लिए? कोई है? 43 SPEAKER: [अश्राव्य] अली: तो तुम 0 बिट से मैं संख्या पार करना चाहते हैं 1 बिट, 2 बिट, 3 बिट, numBits के लिए सभी तरह. बिट्स कि आप प्राप्त कर सकते हैं की अधिकतम संख्या. आरओबी: आम पाश का उपयोग हम हम क्या करने के लिए कुछ एक्स बार करना चाहते हैं क्या है? अली:. बिल्कुल सही. तो हम के लिए है. और फिर हम एक iterator है, जो मैं नहीं जा रहा है बना देंगे. रोब: j. अली: जम्मू = 0. तो हम 0 में शुरू करेंगे. और फिर हम करने के लिए सुनिश्चित करने के लिए शर्त है जा रहे हैं, जबकि आप कर रहे हैं इसके माध्यम से हर एक समय जा रहा है - [आवाज़ें INTERPOSING] रोब: j. अली: जम्मू numBits की तुलना में कम है. तो हम करने के लिए एक बराबर वास्तविक नहीं चाहते हैं, क्योंकि वे numBits रहे हैं कुल, और हम 0 में शुरू. तो हम वास्तव में करने के लिए जा रहे हैं - 44 SPEAKER: ओह. अली: अनुक्रमणिका 1 ऋण numBits पर अंत नहीं है. रोब: हम बिट्स लेबल 0 से 31 है, हम उन्हें 1 32 लेबल नहीं करते. अली: और फिर हम एक द्वारा हर बार वेतन वृद्धि के लिए जा रहे हैं, क्योंकि हम चाहते हैं हर एक की जाँच करें. तो हम जाऊँगा j + +. 45 अध्यक्ष: आप ऐसा क्यों कर रहे हैं? 46 अध्यक्ष: क्यों आप हर बिट के माध्यम से जा रहे हैं? रोब: तो हम हर बिट के माध्यम से जाना चाहते हैं और - तो चलो कहते हैं कि हम कुछ संख्या है. अली: 68. आरओबी: हम 68 का उपयोग कर सकते हैं. तो द्विआधारी 100100 होने जा रहा है. तो मैं इस के अंदर है और हम इन बिट्स में से प्रत्येक पर जाना चाहते हैं. यह एक 1? 1 प्रिंट. यह एक 0 है? 0 प्रिंट. तो फिर हम अगले कुछ पर चलते हैं. यह एक 1? 1 प्रिंट. एक 0? 0 प्रिंट. अली: अच्छा, ठीक है. अब हम सही सूचकांक में जहां कि बिट के लिए कर रहे हैं. हम कैसे है कि विशिष्ट एक की जांच कर सकते हैं? चलो का कहना है कि हम जम्मू = 0 में कर रहे हैं, तो हम बिट के 0 सूचकांक की जांच करना चाहते हैं. तो, इस मामले में, यह एक. तो अब कैसे हम जांच के बारे में जाने के लिए नहीं है - ओह, यह इस एक होगा. रोब: हाँ. अली: क्षमा करें. हम एक कि जाँच के बारे में कैसे एक अर्थ में जाना होगा? हम अगर यह एक 0 या 1 एक है कैसे की जाँच करेगा? Let's ठीक है - वर्ग: 1? अली: और? हाँ. रोब: तो हम कहते हैं कि हम पहले से ही 1 है. तो फिर यह, और यह वापस आ जाएगी कि क्या यह एक 1 या 0. अली: तो हम नीचे जा सकते हैं. और हम के रूप में आप लोगों ने कहा कि और समारोह कर के कर सकते हैं. रोब: int - मैं यह कहने के लिए कैसे करना चाहते हैं - isOne = मैं. और पहली बिट के लिए हम पर हो रही हो, हम कर रहे हैं और मैं 1. अब हम क्या करने के लिए और 2 बिट के लिए चाहते करने के लिए जा रहे हैं? 47 SPEAKER: 2. रोब: हाँ, 2 कि हम 2 पर हैं. अली: तुम नोटिस हूँ कि 1 पर छोड़ एक करने के लिए ले जाया गया है. तो हम किसी भी बिटवाइस ऑपरेटरों सीखा है कि कार्य करते हैं? रोब: अगले एक - अली: हाँ, सही है, बिल्कुल. तो यह एक बाएं बदलाव है. हमेशा 1 के साथ की जाँच करने के बजाय, हम यह बदलाव करने जा रहे हैं. और कितनी बार हम यह बदलाव करने के लिए जा रहे हैं? यदि हम एक 0 की जाँच कर रहे हैं तो हम इसे शून्य पर स्थानांतरित करने के लिए जा रहे हैं. हाँ, बिल्कुल. तो आप इसे j द्वारा बदलाव के लिए छोड़ दिया. बिल्कुल सही. तो अब हम जानते हैं - हम अगर यह 1 है इस int है, और फिर - तो धोखाधड़ी का रोब यहाँ तरह - और इसलिए अब वह आगे जा रहा था और वह सिर्फ कह रहा है कि अगर यह वास्तव में एक है, क्योंकि 1 सच का मूल्यांकन करने के लिए, तो हम ISF isOne 1 के बराबर होती है कहने के लिए नहीं है - तो isOne अगर, तो हम 1 मुद्रित करते हैं, और अन्यथा हम 0 मुद्रित करने के लिए. आरओबी: तो हमारे कार्यक्रम एक समग्र बग है. ठीक है, पर सवाल यह 1. 48 अध्यक्ष: आप कभी चार आपरेशन हिस्सा अंदर isOne डाल सकते हैं और तो यह पिछले भाग के रूप में ही शिफ्ट करने के लिए? तो isOne 1 और फिर बराबर - रोब: हाँ, आप यह कर सकते हैं. हम वास्तव में पता चलता है कि एक बार हम बग कि मैं के बारे में हूँ ठीक कर सकते हैं आप सभी के साथ चर्चा की. सूचना आदेश हम बातों पर जा रहे हैं. इस द्विआधारी प्रतिनिधित्व को देखते हुए, हम 0 बिट के साथ शुरू कर रहे हैं. यदि यह एक 0 है, तो हम मुद्रण कर रहे हैं - ठीक है, यह एक 0 है, तो हम 0 मुद्रण कर रहे हैं. तो हम 2 बिट के लिए जाना. यह एक 0 है, तो हम 0 मुद्रित करने के लिए. तो हम 3 बिट के लिए जाना है. यह एक 1 है, इसलिए हम 1 मुद्रित करने के लिए. अली: तो यह पीछे की ओर जा रही है. तो तुम लोग कैसे सुझाव है कि हम तय है कि और दूसरे रास्ते जाने? 49 SPEAKER: [अश्राव्य] रोब: हाँ. तो बजाय 0 से numBits के लिए जाने की, हम numBits बिट से 0 के लिए जाना होगा. अली: तो [अश्राव्य] हमेशा अन्य रास्ता जा सकते हैं. आरओबी: NumBits शून्य से 1, क्योंकि कि पिछले nubmer है - अली: क्योंकि यह 0 से 31 के लिए चला जाता है. और फिर हम हमेशा यकीन है कि यह 0 से अधिक है तो तुम मत जाओ बहुत दूर करने के लिए सही करने के लिए. और फिर आप हमेशा 1 से घटाना सही करने के लिए जाना होगा. रोब: तो अब हम एक रिवर्स पाश है, और संख्या मुद्रण में वापस आ गया है सही तरीके से. 50 अध्यक्ष: आप बदलाव की बात भी बदल नहीं है क्या? अली: तो नहीं है. रोब: हम एक ही सटीक आपरेशन कर रहे हैं अब को छोड़कर, रिवर्स क्रम में. तो बजाय numBits द्वारा स्थानांतरण कर के शून्य से 1 जो कुछ भी पाने के लिए सा है कि पिछले करने के बजाय, हम सिर्फ यह 1 करूँगा. इस reversing यहाँ से, हम सब कुछ के आदेश रिवर्स कि अंदर होता है. लेकिन हम को बदलने के अंदर क्या सब पर होता है नहीं करना चाहती. अली: क्या इसका यह मतलब है? प्रसंस्करण? ठीक है, तो किसी और किसी भी अन्य वैचारिक सवाल है? अली: इससे पहले कि हम अपने बिंदु में जाना जो है - अली: ठीक है, अच्छी तरह से जाना. J का उपयोग करने के लिए हमारे हो के बजाय: रोब जम्मू का उपयोग करने के लिए हमेशा से एक बाएँ पारी जम्मू की तरह पाली, के बजाय, मुझे लगता है कि क्या आप कह रहे हैं की तरह है, करने के लिए ही उपयोग j. तो के लिए जम्मू - मुझे लगता है कि यह मुश्किल है - जम्मू = 1 << 31. यह है कि मैं क्या चाहता हूँ? मुझे लगता है कि यह 31 << है. j> = 1. j >> >> isOne मैं, जम्मू और कश्मीर - तो अब के बजाय का उपयोग कर - अली: आप एक होने के बजाय लगातार कर रहे हैं जम्मू आगे बढ़ सूचकांक के लिए यह जांच. यह इतना बुरा नहीं है. हम तर्क के समान प्रकार का उपयोग कर रहे हैं. तो अगर आप वापस जाना - ओह, लेकिन इसे खोने के लिए जा रहा है. ठीक है, तुम बस इसे फिर से टाइप करने के लिए जा रहे हैं. यदि आपको लगता है कि हम 1: जम्मू समय की राशि है, और हम थे j एक वेतन वृद्धि से हर बार incrementing, लेकिन इस बार के बजाय वे अंदर पाश के लिए शीर्ष पर जम्मू के वेतन वृद्धि कर रहे हैं. तो हमेशा के बजाय यह चलती नीचे रोब: पाश के लिए बहुत पहले चलना, हम j है 10000. पाश के लिए की अगली यात्रा 01000 है. अगले चलना है. और सिर्फ 1 नीचे प्रचार रखने जा रहा है जब तक हम बहुत मारा अंत में, जहां अब यह है. अगले एक, 1 से धक्का दिया जा, जा रहा है और जम्मू नहीं रह गया है अधिक से अधिक से अधिक या 1 के बराबर है. मैं भी 0 से अधिक, एक ही अंतर डाल सकता है. और फिर यह बात है. प्रश्न? हाँ. 51 SPEAKER: [अश्राव्य] रोब: तो है कि के रूप में एक ही है - है आप j + = 3 देखा है? तो यह 3 j = j + के रूप में एक ही है? आप सी. में वस्तुतः किसी भी ऑपरेटर के लिए कर सकते हैं कि तो j >> = 3 j = >> j 3 के बराबर. तो यह है कि बिटवाइस ऑपरेटरों के साथ भी काम करता है. और मैं 31 है यहाँ नहीं रखा जाना चाहिए. 1 - मैं numBits डाल दिया जाना चाहिए. अली: हाँ, कोई जादू की संख्या. ठीक है, यह 4:00 हालांकि, यदि ऐसा है तो आप लोगों के लिए जाना है, लेकिन यह समझ बनाने के लिए? क्या तुम लोगों को किसी भी अन्य प्रश्न है? रोब: मैं भी अगर हम चाहते थे कि में फेंक करने के लिए जा रहा था - वह त्रिगुट ऑपरेटर सब पर चर्चा की है? अली: नहीं. यह ठीक है. आरओबी: तो आप इसे में अगली बार के लिए लग सकता है. अली: ठीक है, सच में? अब आप बस से दिखा रहे हैं. रोब: नहीं, अब it's - यह वही है जो लोगों को रुचि हो जाता है, और अब वे इसे में लग जाना होगा. तो अब, कि एक चरण में एक ही बात करता है. इसलिए जाँच 1, मैं और 1 j है? क्या यह सच है? यदि ऐसा है तो, एक 1 मुद्रित करने के लिए, और, एक 0 मुद्रित. अली: लेकिन यह कर रहे हैं अन्य रास्ता पूरी तरह से ठीक भी है. यह एक ही तर्क है. तो यह की तरह एक नहीं है - रोब: इस बिंदु पर, हम उन घुंघराले ब्रेसिज़ से छुटकारा मिलता है, क्योंकि यह केवल कर सकते हैं एक पाश के लिए एक लाइन. अली: ठीक है, ताकि समझ पड़ता है? एक कूदने की तरह था. लेकिन यह सिर्फ वाक्यविन्यास की तरह था, तो और अधिक. अच्छा है? किसी भी अन्य प्रश्न है? रोब: सब ठीक है. अली: सब ठीक है, शांत है. अनुभाग के लिए आने के लिए धन्यवाद.