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

विज़ुअल स्टूडियो 2010 में फ़्लोटिंग-पॉइंट अंकगणित x86 और x64 के बीच भिन्न क्यों है?

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

Why does floating-point arithmetic differ between x86 and x64 in Visual Studio 2010?

x86 और x64 के बीच फ़्लोटिंग पॉइंट अंकगणितीय विसंगति

विज़ुअल स्टूडियो 2010 में, x86 और x64 बिल्ड के बीच फ़्लोटिंग-पॉइंट अंकगणित में एक उल्लेखनीय अंतर कुछ अभिव्यक्तियों के मूल्यों की तुलना करते समय उत्पन्न होता है। यह असमानता निम्नलिखित कोड में प्रकट होती है:

float a = 50.0f;
float b = 65.0f;
float c = 1.3f;
float d = a * c;
bool bLarger1 = d 

x86 और x64 आर्किटेक्चर दूसरी अभिव्यक्ति, bLarger2 को अलग तरीके से संभालते हैं। x86 बिल्ड में, bLarger2 सत्य का मूल्यांकन करता है, जबकि x64 बिल्ड में, यह गलत का मूल्यांकन करता है। यह असमानता फ्लोटिंग-पॉइंट ऑपरेशंस में अभिव्यक्ति (ए * सी) की गणना में निहित है। दो आर्किटेक्चर द्वारा उपयोग की जाने वाली फ़्लोटिंग-पॉइंट इकाइयाँ: x86 के लिए x87 और x64 के लिए SSE। दोनों इकाइयों के बीच मूलभूत अंतर उनकी परिशुद्धता है। x87 इकाई डिफ़ॉल्ट रूप से एकल परिशुद्धता (आमतौर पर दोहरी परिशुद्धता) से अधिक नियोजित करती है, जबकि एसएसई इकाई विशेष रूप से एकल परिशुद्धता में काम करती है।

विसंगति को दूर करना

हल करने के लिए विसंगति, x87 इकाई की सटीकता को एसएसई इकाई से मेल खाने के लिए मैन्युअल रूप से कॉन्फ़िगर किया जा सकता है। इसे निम्नलिखित क्रियान्वित करके 32-बिट कोड में प्राप्त किया जा सकता है:

_controlfp(_PC_24, _MCW_PC);परिशुद्धता को एकल परिशुद्धता पर सेट करके, (a * c) का मूल्यांकन bLarger2 अभिव्यक्ति x64 बिल्ड के साथ संरेखित होगी, जिसके परिणामस्वरूप bLarger1 और bLarger2 दोनों को सेट किया जाएगा गलत।

निष्कर्ष
_controlfp(_PC_24, _MCW_PC);

x86 और x64 बिल्ड के बीच फ़्लोटिंग-पॉइंट अंकगणित में अंतर x87 और एसएसई फ़्लोटिंग-पॉइंट इकाइयों के विशिष्ट सटीक स्तरों से उत्पन्न होता है। एसएसई इकाई से मेल खाने के लिए x87 इकाई की सटीकता को मैन्युअल रूप से नियंत्रित करके, दोनों आर्किटेक्चर में अभिव्यक्तियों के लगातार मूल्यांकन को सुनिश्चित करते हुए, विसंगति को समाप्त किया जा सकता है।

नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3