यह मान लेना कि -LLONG_MAX
(LLONG_MAX
नकार) long long
रेंज के अंतर्गत आता है सुरक्षित है?
क्या यह मानना सुरक्षित है कि LLONG_MIN < -LLONG_MAX
तो LLONG_MIN == -LLONG_MAX - 1
?
क्या यह मानक या केवल सभी वास्तविक उपकरणों द्वारा गारंटीकृत है LLONG_MIN == -LLONG_MAX - 1
या LLONG_MIN == -LLONG_MAX
प्रदान करता है?
उन तीन कथन मामले कार्यान्वयन 2 के पूरक में से एक, 1 के पूरक, या पर हस्ताक्षर और परिमाण का उपयोग करता है पर हस्ताक्षर किए पूर्णांक प्रकार का प्रतिनिधित्व करने में सही हैं। -LLONG_MAX
सभी तीन योजनाओं में long long
की सीमा में है, और LLONG_MIN
-LLONG_MAX
(1 का पूरक, चिह्न और परिमाण, और संभवतः 2 का पूरक) है या -LLONG_MAX-1
(संभवतः 2 का पूरक) है। 2 की पूरक मशीनें उस अतिरिक्त मूल्य को जाल प्रतिनिधित्व के रूप में उपयोग कर सकती हैं, जैसे कि 1 के पूरक और साइन और परिमाण मशीनें नकारात्मक शून्य का उपयोग जाल प्रतिनिधित्व के रूप में कर सकती हैं। तो आपके प्रश्नों का उत्तर "हां" है यदि मानक अनिवार्य है कि कार्यान्वयन उन योजनाओं में से एक का उपयोग करता है।
सी मानक (जो करने के लिए सी ++ कई स्थानों में मानक defers) जनादेश या तो 2 के पूरक, 1 के पूरक, या पर हस्ताक्षर और परिमाण:
C11 6.2.6.2 पूर्णांक प्रकार:
यदि साइन बिट एक है, तो मान निम्न तरीकों में से एक में संशोधित किया जाएगा:
- साइन बिट 0 के साथ संबंधित मान अस्वीकार (साइन और परिमाण) है;
- साइन बिट में मूल्य है - (2 एम) (दो पूरक);
- साइन बिट में मूल्य है - (2 एम -1) (वाले 'पूरक)।
सी ++ मानक में थोड़ा और अधिक खुला हो गया लगता है:
सी ++ 14 3.9।1 मौलिक प्रकार:
अभिन्न प्रकार के प्रतिनिधित्व शुद्ध बाइनरी संख्या प्रणाली के उपयोग से मूल्यों को परिभाषित करेंगे। [उदाहरण: यह अंतर्राष्ट्रीय मानक अभिन्न प्रकारों के लिए 2 के पूरक, 1 के पूरक और हस्ताक्षरित परिमाण प्रस्तुतिकरणों परमिट करता है। - अंत उदाहरण]
फ़ुटनोट 51 है, जो परिभाषित करता है क्या "एक शुद्ध द्विआधारी संख्यान सिस्टम" का अर्थ है, दशमलव प्रणाली से इनकार करने के लिए प्रकट होता है, और यह भी सिस्टम (जहां 0 नहीं है सभी बिट्स शून्य) ऑफसेट:
51) बाइनरी अंकों 0 और 1 का उपयोग करने वाले पूर्णांक के लिए एक स्थितित्मक प्रतिनिधित्व, जिसमें लगातार बिट्स द्वारा दर्शाए गए मान additive हैं, 1 से शुरू होते हैं, और 2 की लगातार अभिन्न शक्ति से गुणा किए जाते हैं, सिवाय इसके कि शायद उच्चतम स्थिति के साथ थोड़ा सा।
व्यावहारिक रूप से बोलने वाले सभी, 2 के पूरक, 1 के पूरक, और संकेत और परिमाण हैं: सी मानक द्वारा अनिवार्य समान योजनाएं। मुझे संदेह है कि एक विक्रेता एक मशीन को छूएगा जो पूर्णांक का प्रतिनिधित्व करने के लिए एक नई 21 वीं शताब्दी योजना का उपयोग करता है और किसी भी तरह से सी ++ मानक के कानून के पत्र को पूरा करता है (लेकिन इसलिए सी के साथ असंगत है)।
अपने शोध को साझा करें। –
@ code0 क्या शोध? ओपी जानना चाहता है कि उसका अनुमान मानक अनुपालन है या नहीं। – NathanOliver
@ code0 हस्ताक्षर किए गए पूर्णांक प्रकारों के MIN और MAX के बीच संबंध नहीं मिला और न ही C++ 11 मानक ड्राफ्ट में और न ही C11 मानक ड्राफ्ट में। शायद मुझे कुछ याद आया। –