निम्नलिखित में से कौन सी तकनीक 2 से पूर्णांक को विभाजित करने के लिए सबसे अच्छा विकल्प है और क्यों?
तकनीक 1:
x = x >> 1;
तकनीक 2:
x = x / 2;
यहाँ x
एक पूर्णांक है।
x = x >>> 1
। यह भी ध्यान दें कि प्लेटफॉर्म और कंपाइलर के आधार पर यह शिफ्ट्स का उपयोग करके डिवीजनों और गुणाओं को मैन्युअल रूप से अनुकूलित करने के लिए काफी उचित हो सकता है। - उदाहरण के लिए, माइक्रो कंट्रोलर की सोच, डब्ल्यू / ओ प्रत्यक्ष गुणन के लिए प्रत्यक्ष ALU समर्थन।
x /= 2
क्योंकि x >>= 1
x = x / 2
इसके बजाय लिखने के लिए बहुत अधिक पठनीय समझ रहा हूँ x /= 2
। विषयगत वरीयता शायद :)
⬜=
संयोजन होता है, जब भी संभव हो इनका उपयोग किया जाना चाहिए। यह तथ्य यह है कि पर शोर और पुट जोर निकाल देता x
है संशोधित है, जबकि सामान्य =
ऑपरेटर बल्कि चलता है कि यह एक पुरानी दुनिया की एक पूरी तरह से नए मूल्य स्वतंत्र पर ले जाता है। - हमेशा संयुक्त ऑपरेटरों से परहेज (इतना है कि यह पठनीय है, तो कोई है जो केवल गणितीय ऑपरेटर जानता है) के रूप में अच्छी तरह से अपनी बात हो सकती है, लेकिन फिर आप अत्यंत उपयोगी त्यागना आवश्यकता होगी ++
, --
, +=
, भी।
x
फिर से असाइन करना चाहते हैं , तो न तो इस तरह से उपयुक्त है: यह ऑपरेशन के साथ व्यक्त करने के लिए क्या करना है , इसके आधार परx >>= 1
या तो होना चाहिए याx /= 2
। इसलिए नहीं कि यह तेज़ है (कोई भी आधुनिक संकलक सभी समरूप, समान, तीव्र असेंबली के सभी समतुल्य को संकलित करेगा) लेकिन क्योंकि यह कम भ्रामक है।