सी में लॉगरिदमिक गणना: पूर्णांक लॉग2 कार्यान्वयन
सी में, बाइनरी में स्तर निर्धारित करने के लिए एक पूर्णांक लॉग2() फ़ंक्शन की आवश्यकता उत्पन्न होती है वृक्ष संरचनाएँ. हालाँकि, चिंता तब पैदा होती है जब किनारे के तत्व 2^n के मान तक पहुँच जाते हैं, जिससे संभावित रूप से फ़्लोटिंग-पॉइंट लॉग गणनाओं में गोलाई संबंधी त्रुटियाँ हो जाती हैं।
इस समस्या को हल करने के लिए, एक कुशल समाधान में आधुनिक x86 या x86 पर बीएसआर निर्देश का उपयोग करना शामिल है। -64 प्लेटफार्म. यह निर्देश एक अहस्ताक्षरित पूर्णांक में उच्चतम सेट बिट की स्थिति लौटाता है, जो log2() के समान है।
यहां एक C या C फ़ंक्शन है जो इनलाइन ASM का उपयोग करके bsr को आमंत्रित करता है:
#includestatic inline uint32_t log2(const uint32_t x) { uint32_t y; asm ( "\tbsr %1, %0\n" : "=r"(y) : "r" (x) ); return y; }
इस तकनीक का लाभ उठाकर, आप बाइनरी ट्री संचालन के लिए सटीक पूर्णांक लॉग2() गणना प्राप्त कर सकते हैं, जिससे उचित अनुक्रमण और स्तर निर्धारण के लिए आवश्यक सटीकता सुनिश्चित हो सके।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3