में डबल के रूप में संग्रहीत नकारात्मक 0 का पता लगाना मैं कुछ गणितीय गणना कर रहा हूं (VS2010 का उपयोग करके मैटलैब कोड को C++ में परिवर्तित करने का प्रयास कर रहा हूं) और मुझे यह बताने में सक्षम होना चाहिए कि किसी बिंदु पर मुझे नकारात्मक 0 मिलता है।सी ++
आईईईई मानक -0/+ 0 के अनुसार केवल साइन बिट में शेष (बाकी 0 हैं)।
मैं कोड (post) का निम्न भाग का इस्तेमाल किया है एक अहस्ताक्षरित चार
double f = -5;
unsigned char *c = reinterpret_cast<unsigned char *>(&f);
for(int i=(sizeof(double)-1); i>=0; i--){
printf("%02X", c[i]);
}
5/-5 के साथ यह कोशिश कर रहा है के रूप में अपने डबल व्याख्या करने के लिए मैं उम्मीद परिणाम प्राप्त:
C014000000000000 (-5)
4014000000000000 (5)
लेकिन जब मैं 0/-0 के साथ कोशिश करता हूं तो मुझे दोनों मामलों में केवल शून्य मिलते हैं। वीएस -2010 का कहना है कि वे आईईईई अनुपालन (msdn) हैं, इसलिए मुझे यकीन नहीं है कि इसका कौन सा हिस्सा मुझे नहीं मिल रहा है।
यदि 0/-0 वास्तव में स्मृति में उसी तरह संग्रहीत किया जाता है, तो मुझे ऐसा करने का कोई तरीका नहीं है यदि मुझे ऐसा करने की ज़रूरत है तो मुझे अपना समय बर्बाद करना बंद कर देना चाहिए :) ठीक है?
-0 – wimh