चिह्नित शून्य
हस्ताक्षरित शून्य संबंधित चिह्न (गणित) के साथ शून्य है। सामान्य अंकगणित में, संख्या 0 पर कोई चिह्न नहीं होता है, इसलिए −0, +0 और 0 समान होते हैं। हालाँकि, कम्प्यूटिंग में, कुछ संख्या निरूपण दो शून्यों के अस्तित्व की अनुमति देते हैं, जिन्हें अक्सर -0 (नकारात्मक शून्य) और +0 (सकारात्मक शून्य) द्वारा दर्शाया जाता है, जिन्हें संख्यात्मक तुलना संचालन द्वारा बराबर माना जाता है लेकिन विशेष संचालन में संभावित भिन्न व्यवहार के साथ। यह हस्ताक्षरित संख्या अभ्यावेदन#चिह्न-परिमाण|चिह्न-परिमाण और एक' पूर्णांकों के लिए हस्ताक्षरित संख्या अभ्यावेदन के पूरक और अधिकांश चल बिन्दु संख्या अभ्यावेदन में होता है। संख्या 0 को आमतौर पर +0 के रूप में एन्कोड किया जाता है, लेकिन इसे +0 या -0 द्वारा दर्शाया जा सकता है।
फ़्लोटिंग-पॉइंट अंकगणित के लिए IEEE 754 मानक (वर्तमान में फ़्लोटिंग-पॉइंट संख्याओं का समर्थन करने वाले अधिकांश कंप्यूटर और प्रोग्रामिंग भाषाओं द्वारा उपयोग किया जाता है) के लिए +0 और -0 दोनों की आवश्यकता होती है। हस्ताक्षरित शून्य के साथ वास्तविक अंकगणित को विस्तारित वास्तविक संख्या रेखा का प्रकार माना जा सकता है जैसे कि 1/−0 = −infinity|∞ और 1/+0 = +∞; भाग (गणित) प्लस-माइनस चिह्न|±0/±0 और ±∞/±∞ के लिए केवल अनिश्चित रूप है।
नकारात्मक रूप से हस्ताक्षरित शून्य तरफा सीमा के रूप में नीचे से 0 तक पहुंचने की गणितीय विश्लेषण अवधारणा को प्रतिध्वनित करता है, जिसे x → 0 द्वारा दर्शाया जा सकता है−, x → 0−, या x → ↑0. नोटेशन −0 का उपयोग अनौपचारिक रूप से नकारात्मक संख्या को दर्शाने के लिए किया जा सकता है जिसे शून्य तक पूर्णांकित किया गया है। नकारात्मक शून्य की अवधारणा का सांख्यिकीय यांत्रिकी और अन्य विषयों में कुछ सैद्धांतिक अनुप्रयोग भी हैं।
यह दावा किया जाता है कि IEEE 754 में हस्ताक्षरित शून्य को शामिल करने से कुछ महत्वपूर्ण समस्याओं में संख्यात्मक सटीकता प्राप्त करना बहुत आसान हो जाता है,[1] विशेष रूप से जटिल संख्या प्राथमिक कार्यों के साथ गणना करते समय।[2] दूसरी ओर, हस्ताक्षरित शून्य की अवधारणा गणित में बनी सामान्य धारणा के विपरीत चलती है कि नकारात्मक शून्य शून्य के समान मान है। नकारात्मक शून्य की अनुमति देने वाले प्रतिनिधित्व कार्यक्रमों में त्रुटियों का स्रोत हो सकते हैं, यदि सॉफ्टवेयर डेवलपर्स इस बात पर ध्यान नहीं देते हैं कि जबकि दो शून्य प्रतिनिधित्व संख्यात्मक तुलना के तहत समान व्यवहार करते हैं, तो वे कुछ कार्यों में अलग-अलग परिणाम देते हैं।
अभ्यावेदन
बाइनरी पूर्णांक प्रारूप हस्ताक्षरित संख्या अभ्यावेदन का उपयोग कर सकते हैं। व्यापक रूप से उपयोग किए जाने वाले दो के पूरक एन्कोडिंग में, शून्य अहस्ताक्षरित है। पूर्णांकों के लिए 1+7-बिट हस्ताक्षरित परिमाण|चिह्न-और-परिमाण प्रतिनिधित्व में, नकारात्मक शून्य को बिट स्ट्रिंग द्वारा दर्शाया जाता है 10000000. 8-बिट वाले पूरक प्रतिनिधित्व में, नकारात्मक शून्य को बिट स्ट्रिंग द्वारा दर्शाया जाता है 11111111. इन तीनों एन्कोडिंग में, सकारात्मक या अहस्ताक्षरित शून्य का प्रतिनिधित्व किया जाता है 00000000. हालाँकि, बाद के दो एन्कोडिंग (हस्ताक्षरित शून्य के साथ) पूर्णांक प्रारूपों के लिए असामान्य हैं। हस्ताक्षरित शून्य वाले सबसे सामान्य प्रारूप फ़्लोटिंग-पॉइंट प्रारूप (आईईईई 754 प्रारूप या समान) हैं, जिनका वर्णन नीचे किया गया है।
आईईईई 754 बाइनरी फ़्लोटिंग-पॉइंट प्रारूपों में, शून्य मानों को पक्षपाती घातांक द्वारा दर्शाया जाता है और महत्व दोनों शून्य होते हैं। ऋणात्मक शून्य में साइन बिट पर सेट है। कोई व्यक्ति कुछ गणनाओं के परिणाम के रूप में ऋणात्मक शून्य प्राप्त कर सकता है, उदाहरण के लिए ऋणात्मक संख्या पर अंकगणितीय अंडरफ्लो के परिणाम के रूप में (अन्य परिणाम भी संभव हो सकते हैं), या −1.0×0.0
, या बस के रूप में −0.0
.
आईईईई 754 दशमलव फ़्लोटिंग-पॉइंट प्रारूपों में, नकारात्मक शून्य को घातांक द्वारा दर्शाया जाता है जो प्रारूप के लिए सीमा में कोई वैध घातांक होता है, वास्तविक महत्व शून्य होता है, और साइन बिट होता है।
गुण और प्रबंधन
IEEE 754 फ़्लोटिंग-पॉइंट मानक विभिन्न परिचालनों के तहत सकारात्मक शून्य और नकारात्मक शून्य के व्यवहार को निर्दिष्ट करता है। परिणाम वर्तमान IEEE 754#राउंडिंग नियम सेटिंग्स पर निर्भर हो सकता है।
नोटेशन
उन प्रणालियों में जिनमें हस्ताक्षरित और अहस्ताक्षरित दोनों शून्य शामिल हैं, अंकन और कभी-कभी हस्ताक्षरित शून्य के लिए उपयोग किया जाता है।
अंकगणित
जोड़ और गुणा क्रमविनिमेय हैं, लेकिन कुछ विशेष नियम हैं जिनका पालन करना पड़ता है, जिसका अर्थ है कि बीजगणितीय सरलीकरण के लिए सामान्य गणितीय नियम लागू नहीं हो सकते हैं। h> नीचे दिया गया चिह्न प्राप्त फ़्लोटिंग-पॉइंट परिणाम दिखाता है (यह सामान्य समानता ऑपरेटर नहीं है)।
गुणा या भाग करते समय चिह्नों के सामान्य नियम का हमेशा पालन किया जाता है:
- (के लिए ±∞ से भिन्न)
- (के लिए 0 से भिन्न)
हस्ताक्षरित शून्य को जोड़ने या घटाने के लिए विशेष नियम हैं:
- (के लिए 0 से भिन्न)
- (किसी भी परिमित के लिए , −0 जब ऋणात्मक की ओर पूर्णांकित किया जाता है)
नकारात्मक शून्य के कारण (और तब भी जब गोलाई मोड ऊपर या नीचे की ओर होता है), अभिव्यक्तियाँ −(x − y) और (−x) − (−y), फ़्लोटिंग-पॉइंट वेरिएबल x और y के लिए, द्वारा प्रतिस्थापित नहीं किया जा सकता है y − x. हालाँकि (−0) + x को निकटतम तक पूर्णांकन के साथ x द्वारा प्रतिस्थापित किया जा सकता है (सिवाय जब x NaN#सिग्नलिंग NaN हो सकता है)।
कुछ अन्य विशेष नियम:
- [3]
- (विभाजन के लिए चिह्न नियम का पालन करता है)
- (गैर-शून्य के लिए , विभाजन के लिए चिह्न नियम का पालन करता है)
- (अनिश्चित रूप के लिए NaN या व्यवधान)
गैर-शून्य संख्या को शून्य से विभाजित करने पर शून्य से विभाजन निर्धारित होता है IEEE 754#अपवाद हैंडलिंग, और NaN उत्पन्न करने वाला ऑपरेशन अमान्य ऑपरेशन ध्वज सेट करता है। यदि संबंधित ध्वज के लिए सक्षम किया गया है तो अपवाद हैंडलिंग को कॉल किया जाता है।
तुलना
आईईईई 754 मानक के अनुसार, नकारात्मक शून्य और सकारात्मक शून्य की तुलना सामान्य (संख्यात्मक) तुलना ऑपरेटरों के बराबर होनी चाहिए, जैसे ==
सी (प्रोग्रामिंग भाषा) और जावा प्रोग्रामिंग भाषा के संचालक। उन भाषाओं में, दो मानों को अलग करने के लिए विशेष प्रोग्रामिंग ट्रिक्स की आवश्यकता हो सकती है:
- संख्या को पूर्णांक प्रकार में टाइप करें, ताकि बिट पैटर्न में साइन बिट को देखा जा सके;
- आईएसओ सी का उपयोग करना
copysign()
शून्य के चिह्न को किसी गैर-शून्य संख्या में कॉपी करने के लिए फ़ंक्शन (IEEE 754 कॉपीसाइन ऑपरेशन); - आईएसओ सी का उपयोग करना
signbit()
मैक्रो (IEEE 754 isSignMinus ऑपरेशन) जो बताता है कि किसी संख्या का साइन बिट सेट है या नहीं; - 1/(+0)=+∞ या 1/(−0)=−∞ प्राप्त करने के लिए शून्य का व्युत्क्रम लेना (यदि शून्य अपवाद द्वारा विभाजन फंसा नहीं है)।
ध्यान दें: इंटीग्रल प्रकार में कास्ट (कंप्यूटर प्रोग्रामिंग) हमेशा काम नहीं करेगा, खासकर दो के पूरक सिस्टम पर।
हालाँकि, कुछ प्रोग्रामिंग भाषाएँ वैकल्पिक तुलना ऑपरेटर प्रदान कर सकती हैं जो दो शून्यों को अलग करती हैं। यह मामला है, उदाहरण के लिए, का equalsजावा में विधि Double
आवरण वर्ग.[4]
तापमान जैसे पूर्णांकित मानों में
अनौपचारिक रूप से, कोई नकारात्मक मान के लिए नोटेशन −0 का उपयोग कर सकता है जिसे शून्य तक पूर्णांकित किया गया था। यह अंकन तब उपयोगी हो सकता है जब कोई नकारात्मक चिह्न महत्वपूर्ण हो; उदाहरण के लिए, सेल्सीयस तापमान को सारणीबद्ध करते समय, जहां नकारात्मक संकेत का मतलब शून्य से नीचे होता है।
सांख्यिकीय यांत्रिकी में
सांख्यिकीय यांत्रिकी में, जनसंख्या व्युत्क्रमण वाले सिस्टम का वर्णन करने के लिए कभी-कभी नकारात्मक तापमान का उपयोग किया जाता है, जिसे सकारात्मक अनंत से अधिक तापमान माना जा सकता है, क्योंकि जनसंख्या वितरण फ़ंक्शन में ऊर्जा का गुणांक -1/तापमान है। इस संदर्भ में, -0 का तापमान किसी भी अन्य नकारात्मक तापमान से बड़ा (सैद्धांतिक) तापमान है, जो जनसंख्या व्युत्क्रमण की (सैद्धांतिक) अधिकतम बोधगम्य सीमा के अनुरूप है, जो +0 के विपरीत चरम है।[5]
यह भी देखें
- दो मूल वाली रेखा
- विस्तारित वास्तविक संख्या रेखा
संदर्भ
- ↑ William Kahan, "Branch Cuts for Complex Elementary Functions, or Much Ado About Nothing's Sign Bit", in The State of the Art in Numerical Analysis (eds. Iserles and Powell), Clarendon Press, Oxford, 1987.
- ↑ William Kahan, Derivatives in the Complex z-plane, p. 10.
- ↑ Cowlishaw, Mike (7 April 2009). "Decimal Arithmetic: Arithmetic operations – square-root". speleotrove.com (IBM Corporation). Retrieved 7 December 2010.
- ↑ http://java.sun.com/javase/6/docs/api/java/lang/Double.html#equals(java.lang.Object)
- ↑ Kittel, Charles and Herbert Kroemer (1980). Thermal Physics (2nd ed.). W. H. Freeman and Company. p. 462. ISBN 0-7167-1088-9.
- "Floating point types". MSDN C# Language Specification. Retrieved 15 October 2005.
- "Division operator". MSDN C# Language Specification. Retrieved 15 October 2005.
- Thomas Wang (March 2000). "Java Floating-Point Number Intricacies". September 2000. Archived from the original on 2005-09-21.
{{cite journal}}
: Cite journal requires|journal=
(help) - Mike Colishaw (28 July 2008). "Decimal Arithmetic Specification, version 1.68". Retrieved 2008-08-14. – a decimal floating-point specification that includes negative zero
अग्रिम पठन
- Michael Ingrassia. "Fortran 95 SIGN Change". Sun Developer Network. Retrieved October 15, 2005. – the changes in the Fortran
SIGN
function in Fortran 95 to accommodate negative zero - "JScript data types". MSDN JScript. Retrieved October 16, 2005. – JScript's floating-point type with negative zero by definition
- Venners, Bill (October 1, 1996). "Floating-point arithmetic". Learn Java. JavaWorld. Under the Hood. Retrieved 2020-07-14. – representation of negative zero in the Java virtual machine
- Bruce Dawson (25 February 2012). "Comparing floating point numbers, 2012 Edition". – how to handle negative zero when comparing floating-point numbers
- John Walker. "Minus Zero". UNIVAC Memories. Retrieved October 17, 2005. – one's complement numbers on the UNIVAC 1100 family computers