सकारात्मक मूल्य की तुलना में शून्य से न्यूनतम 1 किलों, युगल, आदि का न्यूनतम मूल्य क्यों है?


10

मुझे पता है कि इसे 2 के पूरक और 1 को जोड़ने के साथ कुछ करना है, लेकिन मुझे वास्तव में नहीं मिलता है कि जब आप नकारात्मक संख्या में आते हैं तो आप बिट्स की समान मात्रा के साथ एक और संख्या को कैसे एन्कोड कर सकते हैं।


3
इसका वास्तव में बुरा हिस्सा यह है कि ABS (MinValue) नकारात्मक है।
OldFart

1
जावा में Double.MIN_VALUE सबसे छोटा सकारात्मक मान है, और (वास्तविक) शून्य से दूर संख्या में समान परिमाण है (जैसा कि यह एक उचित संकेत बिट है)
शाफ़्ट सनकी

जवाबों:


16

इसके बारे में इन शब्दों में सोचें। एक पूर्व संकेत के साथ 2-बिट संख्या लें:

000 = 0
001 = 1
010 = 2
011 = 3

चलो अब कुछ नकारात्मक हैं:

111 = -1
110 = -2
101 = -3

रुको, हमारे पास भी है

100 ... 

यह नकारात्मक होना है, क्योंकि साइन-बिट 1. है, इसलिए, तार्किक रूप से, यह -4 होना चाहिए।

(संपादित करें: जैसा कि WorldEngineer ठीक-ठीक बताता है , सभी नंबरिंग सिस्टम इस तरह से काम नहीं करते हैं - लेकिन आप जो कर रहे हैं उसके बारे में पूछ रहे हैं।)


11

क्योंकि पूर्णांक सीमा में संख्याओं के दो वर्ग नहीं हैं, लेकिन तीन: ऋणात्मक संख्याएँ, शून्य और सकारात्मक संख्याएँ। शून्य को एक स्लॉट लेना होगा (शून्य का प्रतिनिधित्व करने में सक्षम नहीं होने के लिए अव्यवहारिक होगा ...), इसलिए या तो सकारात्मक या नकारात्मक वर्ग को एक स्लॉट छोड़ना होगा। तथ्य यह है कि यह आमतौर पर सकारात्मक सीमा है कि बलिदान करने के लिए एक निश्चित सीमा तक मनमाना है, लेकिन बिट जोड़तोड़ के स्तर पर कुछ चीजें हैं जो इस निर्णय को और अधिक सुविधाजनक बनाती हैं।


यह केवल थोड़ा हेरफेर नहीं है। 32-बिट हस्ताक्षरित संख्याओं का समुच्चय उन संख्याओं का समुच्चय है, जिनका बाइनरी प्रतिनिधित्व 31 वीं के बाद सभी बिट्स में समान होता है, और ऐसी संख्या में 31 शून्य के बाद अनंत संख्या होती है। उस संख्या का योजक व्युत्क्रम, एक 1 और 31 शून्य के बाद शून्य का एक अनंत स्ट्रिंग, हस्ताक्षरित मूल्यों के लिए आवश्यक पैटर्न फिट नहीं करता है।
सुपरकैट

4

द्विआधारी में हस्ताक्षर किए गए पूर्णांक का प्रतिनिधित्व करने के तीन तरीके हैं: 2 का पूरक, 1 का पूरक और साइन-परिमाण। (द्विदिश बहुत समय पहले डोडो पक्षी के रास्ते पर चला गया था।)

1 के पूरक और संकेत-परिमाण में दो शून्य मान हैं, +0 और -0, प्रत्येक एक अद्वितीय प्रतिनिधित्व करता है। 2 के पूरक में केवल एक शून्य मान है, और एक प्रतिनिधित्व है।

अब, N बिट्स का एक क्षेत्र 2 ^ N मानों को एनकोड कर सकता है। 2 के पूरक में से एक को घटाएं, और आपके पास 2 ^ N-1 = 2 ^ (N-1) + 2 ^ (N-1) + 1. चूंकि शून्य के लिए प्रतिनिधित्व सभी शून्य बिट्स है, और + चिह्न शून्य है, वहाँ एक और अधिक संभव nonzero प्रतिनिधित्व के साथ हस्ताक्षर बिट के लिए 1 सेट होगा।

यह कहने का बहुत लंबा-चौड़ा तरीका है कि 2 का पूरक रेंज में मूल्यों का प्रतिनिधित्व करता है - (2 ^ (एन -1)) .. + (2 ^ (एन -1) - 1)।

यदि आप पूर्णांक डिजिटल सिग्नल प्रोसेसिंग कंप्यूटेशन कर रहे हैं तो 1 के पूरक का वास्तव में 2 के पूरक पर एक फायदा है। 1 का पूरक संचालन स्वाभाविक रूप से शून्य की ओर बढ़ता है। 2 का पूरक -infinity की ओर बढ़ता है। मैं इस एक तरह से सीखा ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.