"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > साप्ताहिक ब्लॉग: इस सप्ताह मुझे चार दिलचस्प चीजें मिलीं

साप्ताहिक ब्लॉग: इस सप्ताह मुझे चार दिलचस्प चीजें मिलीं

2024-11-08 को प्रकाशित
ब्राउज़ करें:774

1. वीएस कोड में भ्रमित करने वाले फ़ाइल नामों से बचना

वीएस कोड में सी फाइलें लिखते समय, मैंने सबसे पहले एक फाइल का नाम रखा।c.cpp। प्रोग्राम पूरा करने के बाद, निष्पादन के दौरान मुझे त्रुटियों का सामना करना पड़ा। 30 मिनट की समस्या निवारण के बाद, मुझे पता चला कि समस्या फ़ाइल नाम में है:
.c एक्सटेंशन के कारण IDE ने गलती से इसे C प्रोग्राम के रूप में पहचान लिया, जिसके कारण VS कोड को मेरे कोड को संकलित करने के लिए g (C कंपाइलर) के बजाय gcc (C कंपाइलर) का उपयोग करना पड़ा।

Weekly Blog: Four Interesting Things I Encountered This Week

कैप्शन: कितना मूर्ख!

  • समाधान: Tasks.json फ़ाइल में, 'कमांड' लाइन को gcc से g में बदलें।
  • सीखा गया सबक: अनावश्यक भ्रम से बचने के लिए सी फाइलों के लिए स्पष्ट .cpp एक्सटेंशन का उपयोग करें।

2. जावा का क्रॉस-प्लेटफ़ॉर्म डिज़ाइन दर्शन

जावा का डिज़ाइन दर्शन पारंपरिक संकलित भाषाओं से काफी भिन्न है:

पारंपरिक संकलन:

  1. सी जैसी भाषाएं विशिष्ट के लिए सीधे मशीन कोड में संकलित होती हैं प्लेटफ़ॉर्म (जैसे, विंडोज़, मैक, लिनक्स)
  2. परिणामस्वरूप निष्पादन योग्य फ़ाइलें (.exe) केवल लक्ष्य प्लेटफ़ॉर्म पर चल सकती हैं

जावा का दृष्टिकोण:

  1. कंपाइलर मध्यवर्ती कोड (बाइटकोड) उत्पन्न करता है
  2. यह बाइटकोड जावा वर्चुअल मशीन (जेवीएम) स्थापित किसी भी प्लेटफॉर्म पर चल सकता है
  3. जेवीएम मौजूदा प्लेटफॉर्म के लिए बाइटकोड को मशीन कोड में अनुवाद करने के लिए जिम्मेदार है

यह डिज़ाइन "एक बार लिखें, कहीं भी चलाएं" के लक्ष्य को प्राप्त करता है, जबकि सी निष्पादन योग्य (.exe फ़ाइलें) एक ही प्लेटफ़ॉर्म पर चलने तक सीमित हैं।

  • फायदे: एक ही प्रोग्राम बिना संशोधन के विभिन्न कंप्यूटरों पर चल सकता है

  • नुकसान:प्रक्रिया में अतिरिक्त कदम पारंपरिक तरीकों की तुलना में संकलन को थोड़ा धीमा कर सकता है

एक बार लिखें, कहीं भी दौड़ें

                             ---------James Gosling

3. दो सामान्य संकलन मोड

  • डिबग मोड कम अनुकूलन के साथ डिबगिंग की ओर उन्मुख है। इसका उपयोग मुख्य रूप से डिबगिंग प्रोग्राम के लिए किया जाता है।
  • रिलीज़ मोड का उपयोग मुख्य रूप से रिलीज़ संस्करण तैयार करने, अनुकूलन पर ध्यान केंद्रित करने और केवल बुनियादी डिबगिंग कार्यक्षमता को बनाए रखने के लिए किया जाता है।

Weekly Blog: Four Interesting Things I Encountered This Week

4. निम्न-स्तरीय परिप्रेक्ष्य से फोर्स्ड टाइप कास्टिंग को समझना

लिटिल एंडियन: सबसे कम महत्वपूर्ण बाइट सबसे कम पते पर संग्रहीत है। यह भंडारण विधि सीपीयू मेमोरी रीडिंग को सुविधाजनक बनाने के लिए उभरी, जो निम्न से उच्च पते तक होती है। दिलचस्प बात यह है कि यह आम तौर पर इंसानों द्वारा संख्याएं लिखने के विपरीत है।
उदाहरण के लिए:
329933 का बाइनरी प्रतिनिधित्व 00000000 00000101 00001000 11001101 है
लिटिल एंडियन भंडारण: 11001101 00001000 00000101 00000000
जैसा कि हम देख सकते हैं, लिटिल एंडियन बाइनरी प्रतिनिधित्व में बाइट्स के क्रम को उलट देता है। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि प्रत्येक बाइट के भीतर बिट क्रम अपरिवर्तित रहता है!

फोर्स्ड टाइप कास्टिंग को समझने के लिए एक मजेदार गेम

टाइप कास्टिंग शुरू करने के लिए मेरा पसंदीदा प्रयोग!

# include 
int main()

{
    int a;

    int *p;

    a=329933;

    p=&a;

    char *q;

    q=(char*)p;

    printf("%d\n",*p);

    printf("%d\n",*q);

}

आउटपुट:

329933
-51

मैं उत्सुक हूं कि इसका आउटपुट -51 क्यों है?

स्पष्टीकरण

  1. (char*)&a इंट के पहले बाइट की ओर इशारा करता है। पहली बाइट 11001101 की व्याख्या चार के रूप में की गई है।
  2. उच्चतम बिट 1 एक नकारात्मक संख्या को इंगित करता है, दो के पूरक रूपांतरण के बाद, हमें -51 मिलता है (वे मित्र जो दो के पूरक से परिचित हैं वे सत्यापित कर सकते हैं कि क्या यह वास्तव में -51 का प्रतिनिधित्व करता है)

क्या यह एक संयोग है? आइए दो और उदाहरण आज़माएँ

printf("%d\n",*(q 1));
printf("%d\n",*(q 2));

इसे अजमाएं:

  1. ऊपर बताए गए कोड को चलाने का प्रयास करें और आउटपुट देखें।
  2. विचार करें कि दूसरे और तीसरे बाइट्स ऐसे आउटपुट क्यों उत्पन्न करते हैं। टिप्पणी अनुभाग में बेझिझक इस पर चर्चा करें।
  3. क्या आप अन्य डेटा प्रकारों पर फ़ोर्स्ड टाइप कास्टिंग लागू कर सकते हैं? इसे आज़माइए!

अतिरिक्त जानकारी: दो का पूरक

फोर्स्ड टाइप कास्टिंग करते समय, (चार)पी चार-बाइट इंट के पहले बाइट के पते को इंगित करेगा, जो 11001101 है।
सबसे बाईं ओर वाला 1 ऋणात्मक चिह्न दर्शाता है, जो दर्शाता है कि यह एक ऋणात्मक संख्या है। दो पूरक लागू करने के बाद, हमें मिलता है: 0110011 (अंतिम 7 बिट्स)

(नोट: सकारात्मक संख्याओं के लिए, दोनों का पूरक केवल दशमलव संख्या का द्विआधारी प्रतिनिधित्व है। नकारात्मक संख्याओं के लिए, दोनों का पूरक सबसे बाएं (उच्चतम) बिट को छोड़कर सभी बिट्स को उल्टा करके, फिर 1 जोड़कर प्राप्त किया जाता है सबसे दाईं ओर।)

इसे दशमलव में बदलने पर हमें -51 मिलता है। दिलचस्प है, है ना?

दो के पूरक के लाभ:

  1. यह केवल एक योजक का उपयोग करके सकारात्मक और पूर्णांक दोनों प्रकारों की गणना करने की अनुमति देता है, एक सबट्रैक्टर की आवश्यकता को समाप्त करता है और हार्डवेयर की आवश्यकता को सरल बनाता है।
  2. यह शून्य के लिए एक अद्वितीय बाइनरी प्रतिनिधित्व प्रदान करता है। 10000000 -0 का प्रतिनिधित्व नहीं करता है, बल्कि -128 का प्रतिनिधित्व करता है, जबकि 00000000 0 का प्रतिनिधित्व करता है, 0 का नहीं।

बहुत से लोग आश्चर्य करते हैं कि यह -128 क्यों है। यदि आप उत्तर जानते हैं, तो बेझिझक इसे टिप्पणी अनुभाग में साझा करें। इससे न केवल दूसरों को मदद मिलेगी बल्कि आपको अपने विचारों को व्यवस्थित करने में भी मदद मिलेगी।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/stockdale_roger_999e292a7/weekly-blog-four-interesting-things-i-encountered-this-week-eo9?1 यदि कोई उल्लंघन है, तो कृपया [email protected] पर संपर्क करें इसे हटाने के लिए
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3