क्या यह मान लेना उचित है कि किसी भी भौतिक मात्रा को 64-बिट पूर्णांक द्वारा अतिप्रवाह या अंडरफ्लो के बिना दर्शाया जा सकता है?


31

JDK में मूल द्विआधारी खोज एल्गोरिथ्म में 32-बिट पूर्णांक का उपयोग किया गया था और यदि (low + high) > INT_MAX( http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nnly.html ) पर एक अतिप्रवाह बग था। ।

यदि हम 64-बिट पूर्णांक का उपयोग करते हुए एक ही बाइनरी खोज एल्गोरिथ्म को फिर से लिखते हैं, तो क्या हम मान सकते हैं कि low + highINT64_MAX से अधिक कभी नहीं होगा क्योंकि यह 10 ^ 18 बाइट्स मेमोरी के लिए शारीरिक रूप से असंभव है?

भौतिक मात्रा का प्रतिनिधित्व करने के लिए 64-बिट पूर्णांक का उपयोग करते समय (हस्ताक्षरित) , क्या यह उचित है कि अंडरफ्लो और अतिप्रवाह नहीं हो सकता है?


4
किसी भी भौतिक घटना को देखें जिसमें एक संबद्ध अपरिमेय संख्या हो। उदाहरण के लिए वृत्त और पाई। फ़्लोटिंग पॉइंट नंबर स्वाभाविक रूप से तर्कसंगत हैं, इस प्रकार आप त्रुटि के बिना इसे पूरी तरह से प्रस्तुत नहीं कर सकते हैं।
थॉमस एडिंग

92
सूरज में परमाणुओं की संख्या लगभग 1.2e57 है, जो 190 बिट अहस्ताक्षरित पूर्णांक में फिट बैठता है। विरोधाभास से, 64 बिट्स किसी भी भौतिक मात्रा का प्रतिनिधित्व करने के लिए पर्याप्त बड़ी नहीं हो सकती हैं।

6
आपका प्रश्न शीर्षक भ्रामक है। आपको पूछना चाहिए "क्या वे मात्राएं हैं जिनके लिए किसी को 2 ^ 64? से बड़े आकार के क्रमबद्ध सरणी का उपयोग करके एक आवेदन की उम्मीद हो सकती है?"
डॉक्टर ब्राउन

7
या आप इस टिप्पणी को पढ़ने के बाद से yoctoseconds की संख्या।
जोडेल

4
एक समय था जब सबको लगता था कि 2 ^ 32 कंप्यूटर एक दूसरे से जुड़े हुए नहीं होंगे। आप अपने परमाणुओं को NAT का उपयोग नहीं करना चाहते हैं, क्या आप?
सेब

जवाबों:


58

संक्षिप्त जवाब नहीं है। हालाँकि, कुछ अनुप्रयोगों के लिए आपकी धारणा सही हो सकती है।

कुछ स्पष्टता के लिए जोड़े गए अल्पविरामों के साथ, एक हस्ताक्षरित इंट, 2 ^ 63 को मानकर, = 9,223,372,036,854,775,808। तो यह लगभग 9 * 10 ^ 18 है। 10 ^ 18 एक "एक्सा" है।

विकिपीडिया का कहना है कि "2013 तक, वर्ल्ड वाइड वेब का अनुमान 4 zettabytes तक पहुँच गया है। [12]", जो कि 4000 हैबिट्स है। इसलिए, डब्ल्यूडब्ल्यूडब्ल्यू 2 ^ 63 बाइट्स की तुलना में लगभग 400 गुना बड़ा है।

इसलिए, कम से कम एक भौतिक मात्रा है जो हस्ताक्षरित (या अहस्ताक्षरित) 64 बिट पूर्णांक से बहुत बड़ी है। यह मानते हुए कि आपकी इकाइयाँ बाइट्स हैं । यदि आपकी इकाइयाँ GigaBytes की तरह कुछ अधिक बड़ी थीं, तो आप ठीक होंगे, लेकिन माप की आपकी सटीकता कम होगी।

एक अन्य उदाहरण के लिए, दूर की आकाशगंगाओं पर विचार करें। एंड्रोमेडा गैलेक्सी वास्तव में करीबी लोगों में से एक है, और यह 2.5 * 10 ^ 6 प्रकाश वर्ष दूर है। यदि आपकी इकाइयाँ मील थीं , तो वह 14.5 * 10 ^ 18 होगी, जो 64 बिट हस्ताक्षरित पूर्णांक से अधिक होगी। अब, स्पष्ट रूप से यह उन इकाइयों पर निर्भर करता है जिन्हें आप अपने माप के लिए उपयोग करते हैं, लेकिन कुछ आकाशगंगाएं एंड्रोमेडा की तुलना में आगे हैं। ( सबसे प्रसिद्ध ज्ञात 13 * 10 ^ 9 LY दूर है। ) आप अपने माप के लिए जो सटीकता चाहते हैं, उसके आधार पर यह 64 बिट पूर्णांक को ओवरफ्लो कर सकता है।

( जोड़ा ) हाँ, खगोलीय दूरी के लिए मीलों एक घटिया इकाई है। एक अधिक सामान्य इकाई एक खगोलीय इकाई हो सकती है , जो लगभग 93 मिलियन मील की दूरी पर है। माप की उस इकाई का उपयोग करते हुए, सबसे ज्ञात ज्ञात आकाशगंगा लगभग 10 ^ 15 AU (यदि मेरा गणित सही है), जो 64 बिट इंट में फिट होगी। हालाँकि, यदि आप उपग्रह की दूरी को पास के उपग्रह की परिक्रमा करना चाहते हैं, तो वह इकाई बहुत बड़ी है।

इलेक्ट्रॉनिक्स से एक और उदाहरण: धारिता (एफ), समाई की एक इकाई । बड़े कैपेसिटर 5kF तक के होते हैं। और यह संख्या समय के साथ हाइब्रिड कारों, "स्मार्ट ग्रिड", आदि में सुधार होगी। एक बार कैपेसिटेंस को 10 ^ -18 F जितना छोटा माप सकते हैं। इसलिए "वास्तविक" कैपेसिटेंस में समग्र रेंज जिसे हम आज माप सकते हैं वह 5 * 10 ^ 21 है, जो 64 बिट पूर्णांक से बड़ा है।


3
यह सब सच है, लेकिन व्यावहारिक दृष्टिकोण पर हम मिल्की वे से मीलों में एंड्रोमेडा की आकाशगंगा की दूरी को मापने के बिंदु पर सवाल कर सकते हैं (जहां बिल्कुल संदर्भ के बिंदु हैं?) या पूरे डब्ल्यूडब्ल्यूडब्ल्यू बाइट्स में (इस सटीक पर)? यह हर मिलीसेकंड में बदल जाता है)
जीव

45
@ जीवन एक व्यावहारिक दृष्टिकोण पर मैं कोई कारण नहीं देख सकता कि आपको कभी भी 640kB से अधिक मेमोरी को संबोधित करने की आवश्यकता क्यों होगी। निश्चित रूप से इसके अधिक से अधिक आप की आवश्यकता होगी।
ArTs

2
मीलों में खगोलीय दूरियों को मापने का एक और दोष: आप बिल्ली के साथ ठगी करने के लिए उत्तरदायी हैं।
विलीह टोटलैंड

2
@ जीवन अच्छा बिंदु। यह मुझे रिचर्ड फेनमैन की याद दिलाता है जो तारों के एक समूह के तापमान की संक्षिप्तता के बारे में शेख़ी करता है। मैं देखता हूं कि आप औसत, न्यूनतम, अधिकतम, लेकिन राशि क्यों चाहेंगे? शारीरिक महत्व क्या है?
piojo

6
@piojo - माना जाता है कि माध्य की गणना करते समय योग बहुत काम आता है।
स्कॉट व्हिटलॉक

20

जब कॉम्बिनेटरिक्स शामिल हो तो आपको कॉस्मिक जाने की भी आवश्यकता नहीं है। पुल के एक खेल में 2 ^ 95 संभावित सौदे हैं और यह जटिलता के छोटे पक्ष पर है।


अगर कोई "भौतिक मात्रा" के रूप में गिना जाए तो आश्चर्य हो सकता है।
पॉल ड्रेपर

2
दूसरी ओर, रसायन विज्ञान या गणित में शामिल कॉम्बिनेटरिक्स "भौतिक" होने के योग्य होंगे।
3:25 बजे

@PaulDraper अगर आपको उन सभी सौदों के लिए जमीन पर लेआउट के लिए कार्ड के पर्याप्त डेक मिले, तो यह शारीरिक होगा। तब आपके पास 2 से अधिक ^ 95 कार्ड शामिल होंगे।
ब्रैड

1
@ ब्रैड, मुझे लगता है कि ओपी एक मात्रा के लिए पूछ रहा है जो "मौजूद है" (ठीक है, अस्तित्व एक फजी अवधारणा है)। 2 ^ 95 कार्ड जो एक गणितीय अवधारणा को संतुष्ट करते हैं, वे मौजूद नहीं हैं (यदि वे करते हैं तो गिनीज को कॉल करें)। यह कहना मुश्किल है कि "क्या मायने रखता है" और क्या नहीं। यह जवाब सिर्फ एक भौतिक मात्रा की मेरी स्क्विशी धारणा को संतुष्ट नहीं करता है।
पॉल ड्रेपर

17

आपके प्रश्न के लिए सबसे प्रासंगिक भौतिक मात्रा कंप्यूटर रैम है

विंडोज सर्वर 2012 भौतिक स्मृति के 4 टीबी तक का समर्थन करता है । वह 2 42 बाइट्स है। रैम क्षमता, हर साल के बारे में दोगुना तो में जारी रखते हैं अब से केवल 17 साल "विंडोज सर्वर 2032" 2 का समर्थन करेंगे 62 भौतिक स्मृति की बाइट्स, जो समय पर अपने low + high2 तक पहुंच जाएगा 63 2 और चुंबन अधिकतम 64-बिट पूर्णांक पर हस्ताक्षर किए -।

मुझे उम्मीद है कि कोई भी सुरक्षा-महत्वपूर्ण प्रणाली विफल नहीं होगी, माना जाता है कि 64 बिट्स हमेशा पर्याप्त होंगे।

थोड़ा और सामान्य उपयोग के लिए, सबसे प्रासंगिक भौतिक मात्रा मेमोरी एड्रेस स्पेस है । (यह भौतिक मेमोरी की तुलना में बहुत बड़ा एड्रेस स्पेस के लिए उपयोगी है, उदाहरण के लिए, कमरे में बढ़ने के लिए सभी के साथ कई ढेर लगाने के लिए।) वर्तमान x86-64 कार्यान्वयन 48 बिट वर्चुअल पते का समर्थन करता है, इसलिए हमारे पास इन सीपीयू तक पहुंचने से पहले केवल 14 साल हैं। 2 62 बाइट एड्रेस-स्पेस लिमिट।

और फिर साझा की गई मेमोरी "जहां (शारीरिक रूप से अलग) यादों को एक (तार्किक रूप से साझा) पता स्थान के रूप में संबोधित किया जा सकता है"।


4
+1 आपका उत्तर लगभग सही है, सिवाय इसके कि आज के कुछ प्रकार के सॉफ़्टवेयर पहले से ही 0xFFFFFFFFxxxxxxxx(यानी उच्चतर अर्ध ) की सीमा में मेमोरी एड्रेस का सामना कर रहे हैं , उदाहरण के लिए ऑपरेटिंग सिस्टम या डिवाइस ड्राइवर।
फेरी

2
@ सिकीलीन संभवत: जहां तक ​​व्यक्तिगत कंप्यूटिंग का सवाल है। हालाँकि, वितरित साझा मेमोरी, या DGAS (लेख में उल्लिखित) वास्तविक हैं; सुपर कंप्यूटर वर्षों से उस शैली में काम कर रहे हैं, और यह संभव है कि यह बहु-राष्ट्रीय क्लाउड कंप्यूटिंग अवसंरचना के लिए आदर्श बन जाए। जाहिरा तौर पर, विशिष्ट प्रोग्रामर द्वारा लिखे गए विशिष्ट सॉफ़्टवेयर कोड ऐसे वातावरण में नहीं चलेंगे - असामान्य वातावरण असामान्य (यानी इन्फ्रास्ट्रक्चरल) सॉफ़्टवेयर चलाते हैं। लेकिन P.SE पाठकों का एक अंश इस तरह के कैरियर ट्रैक पर उतर सकता है; शायद ज़रुरत पड़े।
रवांग

1
@ जोशुआ: वर्तमान तकनीक (32 जीबी डीडीआर 4) के साथ जो प्रकाश की यात्रा के लिए 7 मीटर या 23 एनएम होगी, जो कि आधुनिक कैस विलंबता के अनुरूप है। यदि आप इसे लैंडॉउर के सिद्धांत पर जोर देते हैं, तो सिलिकॉन के घनत्व के साथ आपको शारीरिक सीमा के लिए 31 एनएम या 10 ^ -16 सेकंड मिलते हैं। यह बहुत पागल नहीं लगता ... ठीक है, शायद थोड़ा सा।
चार्ल्स

3
@ जोशुआ यह एक तकनीकी सीमा है, भौतिक नहीं। (जैसा कि, समस्या यह है कि हम यह नहीं जानते हैं कि इसे व्यावहारिक रूप से कैसे करना है, न कि कुछ भौतिक कानून इसे निषिद्ध करते हैं।) इसलिए, इस सप्ताह प्रासंगिक रहते हुए, यह किसी भी क्षण कुछ नई सफलता के साथ बदल सकता है। 60 या इतने साल पहले, लोगों ने आपकी टिप्पणियों के बारे में बहुत कुछ किया होगा, लगभग 50 किलोबाइट की मेमोरी को रैम माना जाता है, इस आधार पर कि हाथ से घाव के तार कॉइल का उपयोग किया जाता है, स्मृति कोर के भागों के रूप में न केवल इतना छोटा और अभी भी मिल सकता है फ़ंक्शन, लेकिन ईएम क्रॉसस्टॉक से बचने के लिए उनके बीच आवश्यक स्थान।
मैथ्यू नजमन

2
मुझे याद है कि जब 24 बिट्स का पता स्थान (16 मेगाबाइट) था, तो किसी की जरूरत से ज्यादा - या वहन करने में सक्षम था। :-)
बॉब जार्विस - मोनिका

10

क्या यह मान लेना उचित है कि किसी भी भौतिक मात्रा को 64-बिट पूर्णांक द्वारा अतिप्रवाह या अंडरफ्लो के बिना दर्शाया जा सकता है?

बिल्कुल नहीं। बहुत सारी संख्याएँ हैं जो दोनों से बड़ी और छोटी हैं, यही वजह है कि हमारे पास फ्लोटिंग पॉइंट नंबर हैं। फ़्लोटिंग पॉइंट नंबर बेहतर रेंज के लिए कम परिशुद्धता से व्यापार करते हैं।

आपके द्वारा उद्धृत विशिष्ट उदाहरण में, यह अत्यधिक संभावना नहीं है कि आपको कभी ऐसे नंबर की आवश्यकता होगी जो इससे बड़ा हो। 64 बिट्स लगभग 18 क्विंटल तत्वों से मेल खाती है। पर कभी नहीं कहते।


7

आपकी धारणा उन भौतिक राशियों को नहीं संभालेगी जिन्हें केवल फ्लोटिंग पॉइंट नंबरों द्वारा दर्शाया जा सकता है। और यहां तक ​​कि अगर आपने सभी संख्याओं को स्केल करने का फैसला किया है, तो सभी संख्याओं को 10000 से गुणा करके कहें (इसलिए मान अभी भी पूर्णांक हैं लेकिन दस-हजारवें में दर्शाया जा सकता है), यह योजना अभी भी संख्याओं के बहुत करीब शून्य के लिए विफल रहती है, उदाहरण के लिए इलेक्ट्रॉन द्रव्यमान (9.1094 * 10⎻³¹ किग्रा)।

यह एक बहुत ही वास्तविक (और बहुत छोटी) भौतिक मात्रा है , यहाँ कुछ और हैं जिनसे आपको परेशानी होने वाली है। और अगर आप तर्क देते हैं कि यह वास्तविक भौतिक मात्रा नहीं है (भले ही यह किलो में है), विचार करें:

10 kg (obviously physical quantity)
1 kg (same)
10⎻² kg (1/100 kg, or about 1/3 ounce) (also quite real)

इसलिए आप देखें कि मैं इसके साथ कहां जा रहा हूं। आखिरी एक जिसे आप या तो संभाल नहीं सकते हैं।

बेशक, आपके पास एक चर गुणक को स्केल करने के लिए संख्या के भीतर एक विशेष क्षेत्र हो सकता है जो एक चर गुणक द्वारा ऊपर या नीचे हो सकता है; जी अब आपने सिर्फ फ्लोटिंग पॉइंट का आविष्कार किया।


1
लेकिन आप न्यूनतम भौतिक मान (IIRC) प्रदान कर सकते हैं, द्रव्यमान के लिए यह 1 इलेक्ट्रॉन-वोल्ट के बराबर द्रव्यमान था)। उदाहरण के लिए, आप प्लैंक लंबाई इकाइयों (IIRC) 200 अंकों के साथ ब्रह्मांड की लंबाई को माप सकते हैं। आप मानसिक रूप से प्लांक की लंबाई 1/10 के बारे में बात कर सकते हैं , लेकिन शारीरिक रूप से इसका कोई मतलब नहीं है।
SJuan76

क्या आपका मतलब 10000 से भाग नहीं है? 10000 से गुणा करने से थ्रेड ओपनर से धारणा असफल होने की संभावना बढ़ जाएगी। इसके अलावा शायद मेरा डिवाइस इलेक्ट्रॉन द्रव्यमान को सही ढंग से प्रदर्शित नहीं करता है लेकिन यह 10 ^ -31
माइक

मेरा मतलब 10000 से गुणा करना है। यदि आप 1.0001 को पूर्णांक के रूप में संग्रहीत करना चाहते हैं, तो आपको इसे 10001 के रूप में संग्रहीत करने से पहले 10000 से गुणा करना होगा। मैं -31 के लिए सुपरस्क्रिप्ट वर्णों का उपयोग कर रहा था, हो सकता है कि वे सभी ब्राउज़रों पर सही ढंग से प्रदर्शित न हों। । फ़ायरफ़ॉक्स में ठीक लग रहा है।
tcrosley

@ SJuan76 भविष्य-प्रूफिंग नामक कुछ है। 1850 में, हम 10 ^ -20 मीटर (एक परमाणु की तुलना में बहुत छोटा है, लेकिन अभी भी प्लैंक लंबाई से बहुत बड़ा है) की इकाई के बारे में बात कर सकते हैं, लेकिन शारीरिक रूप से, ऐसा करने का कोई मतलब नहीं था। तब लोगों ने एक परमाणु की आंतरिक संरचना का पता लगाया। निश्चित रूप से, क्वार्क्स मौलिक दिखते हैं , लेकिन हम वास्तव में कह सकते हैं कि (ए) वे इस तरीके से कार्य करते हैं कि हम कैसे मौलिक कणों से व्यवहार करने की अपेक्षा करते हैं, और (बी) हमने अभी तक एक अगला कछुआ नहीं पाया है। 1850 में, हम परमाणुओं के बारे में वही दो बातें कह सकते थे। अगर हमें अगला कछुआ मिल जाए, तो 1/10 प्लैंक की इकाइयाँ काफी उपयोगी हो जाती हैं।
मैथ्यू नजमोन

यह एक आम गलत धारणा है कि प्लैंक इकाइयों में स्थान या समय की मात्रा निर्धारित की जाती है! तुम्हें पता है, एक 4-आयामी सरणी से ब्रह्मांड का प्रतिनिधित्व नहीं कर सकते तो कम से कम मौजूदा सिद्धांतों में नहीं ... तो प्लैंक लंबाई के अंशों हैं शारीरिक रूप से सार्थक (लेकिन परिणाम है कि सामान्य सापेक्षता और / या QM से बाहर आने उड़ा शुरू करने या एक दूसरे के विपरीत)।
yatima2975

5

पहले मैं इस प्रश्न का उत्तर दूंगा कि पूर्णांक संख्या द्वारा भौतिक मूल्यों का क्या प्रतिनिधित्व किया जा सकता है?

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

तो वे कौन से भौतिक मूल्य हैं जो प्राकृतिक संख्याएं हैं और क्या वे 64 बिट पूर्णांक को ओवरफ्लो कर सकते हैं?

मैं दो के बारे में सोच सकता हूं। भौतिक वस्तुओं की संख्या (जैसे परमाणु), और ऊर्जा स्तर जो एक क्वांटम प्रणाली में हो सकते हैं। वे दो चीजें हैं जो कड़ाई से पूर्णांक हैं। अब, मुझे पता है कि आप एक परमाणु को विभाजित कर सकते हैं, लेकिन यह अभी भी एक पूर्णांक राशि का उत्पादन करता है और आप इसे अनिश्चित काल तक विभाजित नहीं कर सकते। उन दोनों आसानी से अहस्ताक्षरित पूर्णांक की 64 बिट रेंज को पार कर सकते हैं । परमाणुओं की संख्या अधिक है, और एक परमाणु एक से अधिक ऊर्जा अवस्था में हो सकता है।

जानकारी भौतिक है या नहीं, बहुत बहस का विषय है। मैं कहूंगा कि यह नहीं है। इसलिए, मैं यह नहीं कहूंगा कि जानकारी की मात्रा एक भौतिक चीज है। तो राम की मात्रा या ऐसा कुछ भी नहीं है। यदि आप इसकी अनुमति देते हैं, तो आसानी से परमाणुओं की संख्या इस संख्या को पार कर जाती है, क्योंकि आपको आज की तकनीक के साथ एक बिट स्टोर करने के लिए एक से अधिक परमाणु की आवश्यकता है।


प्राकृतिक संख्याओं के सेट एन में केवल गैर-नकारात्मक पूर्णांक शामिल हैं। मुझे पता है कि आपका क्या मतलब था, लेकिन "प्राकृतिक संख्या" में एक विशिष्ट गणितीय परिभाषा है जो आप इसका उपयोग कर रहे हैं।

में सच में आश्वस्त नहीं हूँ। पूर्णांक प्रकार प्राकृतिक संख्याओं का प्रतिनिधित्व करते हैं (किसी निश्चित सीमा के भीतर, जो निहित है)। क्या यह सच नहीं है? मुझे लगता है कि आपने मान लिया था कि मैंने सेटों के बीच समानता निहित की है। यह सच नहीं है, किसी भी प्राकृतिक संख्या को पूर्णांक द्वारा दर्शाया जा सकता है। कृपया ध्यान दें कि मैंने उनके बीच मतभेद भी कहा। मुझे ऐसा नहीं लगा कि हस्ताक्षरित / अहस्ताक्षरित होना आवश्यक है। गायन प्रकार केवल तभी आवश्यक होता है जब आप मतभेदों से निपटते हैं।
luk32

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

@MatthewNajmon बेशक, मैं सहमत हूं, इसीलिए मैंने आखिरी वाक्य छोड़ा। रैम चिप की बिट्स की संख्या काफी समय तक परमाणुओं की संख्या से कम होगी, इसलिए आप बाद का उपयोग कर सकते हैं। दूसरे शब्दों में, बिट्स की संख्या का उपयोग क्यों करें, जब आप एक ही रैम चिप के परमाणुओं की संख्या का उपयोग कर सकते हैं? वर्तमान में थोड़ी सी जानकारी एक ऐसी स्थिति का प्रतिनिधित्व करती है जो एक भौतिक प्रणाली में है, इसलिए आप प्रति एटम एक बिट से अधिक स्टोर कर सकते हैं, लेकिन यह आजकल एप्लिकेशन से बहुत दूर है, और मैं अभी भी नहीं देखता कि यह संख्या से अधिक कैसे हो सकता है इस तरह की प्रणाली के क्वांटम राज्य। लेकिन मैं आपके आधार से पूरी तरह सहमत हूं।
luk32

4

जेरी 101101 के जवाब के अलावा, मैं शुद्धता के लिए यह बहुत ही सरल और व्यावहारिक परीक्षण देना चाहूंगा:

मान लीजिए कि आप malloc64-बिट OS में कुछ मेमोरी आवंटित करते हैं । मान लें कि स्मृति आबंटक आपके द्वारा अनुरोधित आकार का एक मान्य मेमोरी ब्लॉक वापस करने का निर्णय करता है, लेकिन जहां 63-वें बिट सेट है।

दूसरे शब्दों में, मान लें कि कुछ प्रोग्रामिंग एनवायरनमेंट मौजूद 0xFFFFFFFFxxxxxxxxहैं, जहां वैध मेमोरी रेंज हैं जिन्हें कॉल से वापस किया जा सकता है malloc

सवाल यह है कि क्या आपका कोड अभी भी इच्छानुसार काम करेगा?

जब 32-बिट ऑपरेटिंग सिस्टम पर अनुरूप स्थिति होती है, तो कुछ सॉफ्टवेयर सही ढंग से संचालित नहीं होते हैं यदि उन्हें "ऊपरी आधे में" मेमोरी एड्रेस दिया जाता है। मूल रूप से, ऐसे मेमोरी एड्रेस केवल विशेषाधिकार प्राप्त कोड (ऑपरेटिंग सिस्टम, डिवाइस ड्राइवर, और परिधीय हार्डवेयर) के लिए उपलब्ध थे, लेकिन 32-बिट एड्रेस स्पेस क्रंच के कारण, OS विक्रेताओं ने उस आरक्षित स्थान का हिस्सा बनाने का फैसला किया अनुप्रयोग जो इसके लिए पूछते हैं।

सौभाग्य से, यह स्थिति 64-बिट कार्यक्रमों के लिए थोड़ी देर के लिए होने की संभावना नहीं है, कम से कम एक दशक में नहीं।

जब वह स्थिति अंततः होती है, तो इसका मतलब है कि 128-बिट पते योग्य प्रोसेसर और ऑपरेटिंग सिस्टम उस समय तक मुख्यधारा बन गए होंगे, और वे उन "विरासत अनुप्रयोगों" को संचालित करने के लिए "64-बिट इम्यूलेशन वातावरण" प्रदान करने में सक्षम होंगे। आज के 64-बिट ऑपरेटिंग सिस्टम के समान मान्यताओं के तहत।

अंत में, ध्यान दें कि यह चर्चा केवल मेमोरी पतों पर केंद्रित है। टाइमस्टैम्प के साथ एक समान मुद्दा अधिक एहतियात के साथ लिया जाना चाहिए, क्योंकि कुछ टाइमस्टैम्प प्रारूप माइक्रोसेकंड के लिए बहुत अधिक सटीकता के बिट्स आवंटित करते हैं, और इसलिए भविष्य में समय का प्रतिनिधित्व करने के लिए कम बिट्स उपलब्ध हैं। विकिपीडिया लेख में वर्ष 2038 समस्या पर इन मुद्दों को संक्षेप में प्रस्तुत किया गया है


4

यह एक ऐसा सवाल है जो आपको केस-बाय-केस आधार पर पूछना होगा। आपको एक सामान्य धारणा का उपयोग नहीं करना चाहिए कि 64-बिट अंकगणितीय अतिप्रवाह नहीं होगा, क्योंकि जब सही मात्रा बहुत छोटी सीमा में होगी, तो एक दुर्भावनापूर्ण डेटा स्रोत आपको अनुचित मात्रा दे सकता है जो अतिप्रवाह कर सकता है, और यह बेहतर होगा इस स्थिति के लिए अप्रत्याशित रूप से इसकी चपेट में आने से तैयार।

कुछ मामले हैं जहां यह कोड लिखने के लिए समझ में आता है जो 64-बिट संख्या के गैर-अतिप्रवाह पर निर्भर करता है। उदाहरण का मुख्य वर्ग मुझे पता है कि काउंटर हैं, जहां काउंटर का उपयोग होने पर हर बार वेतन वृद्धि होती है। नैनोसेकंड (व्यावहारिक नहीं) प्रति एक वेतन वृद्धि की दर पर भी यह एक सदी से अधिक समय तक बह जाएगा।

ध्यान दें कि जब यह पहली बार "सिद्धांत में हमेशा गलत हो सकता है" तब लगता है जब सिस्टम की शुद्धता के लिए "विफलता पर" समय पर भरोसा किया जाता है, हम यह हर समय प्रमाणीकरण / लॉगिन के साथ करते हैं। पर्याप्त समय (ब्रूट फोर्सिंग के लिए) को देखते हुए ऐसी कोई भी प्रणाली (पासवर्ड, निजी कुंजी, सत्र टोकन, आदि के आधार पर) टूट गई है।


2

क्या यह 64 बिट में फिट नहीं होने के लिए एक भौतिक मात्रा के लिए संभव है? बेशक। अन्य लोगों ने बताया कि अगली आकाशगंगा में सूर्य में परमाणुओं की संख्या या मिलीमीटर की संख्या की गणना की गई है। आपके आवेदन के लिए ऐसे मामले प्रासंगिक हैं या नहीं, यह इस बात पर निर्भर करता है कि आपका आवेदन क्या है। यदि आप अपने गोदाम में किसी भी बिन में वस्तुओं की संख्या की गिनती कर रहे हैं, तो 16 बिट्स पर्याप्त होंगे। यदि आप विभिन्न स्थितियों को पूरा करने वाले दुनिया के लोगों की संख्या के बारे में आँकड़े संकलित कर रहे हैं, तो आपको अरबों को रिकॉर्ड करने में सक्षम होने की आवश्यकता है, इसलिए आपको 32 से अधिक बिट्स की आवश्यकता होगी, जिस बिंदु पर आप संभवतः 64 (कुछ कंप्यूटरों पर जाएँगे) 37 बिट संख्या आदि के लिए अंतर्निहित समर्थन है)। यदि यह एक रसायन विज्ञान अनुप्रयोग है जो परमाणुओं के लायक मोल्स की गिनती कर रहा है, तो 64 बिट्स पर्याप्त नहीं होंगे।

तकनीकी रूप से, सिर्फ इसलिए कि आज किसी भी कंप्यूटर में 2 ^ 64 बाइट्स की मेमोरी आवश्यक नहीं है कि एक सरणी इंडेक्स 2 ^ 64 से अधिक कभी नहीं हो सकता है। एक अवधारणा है जिसे "स्पार्स एरे" कहा जाता है, जहां एरे के कई तत्व भौतिक रूप से कहीं भी संग्रहीत नहीं होते हैं, और ऐसे अस्थिर मानों को शून्य या शून्य जैसे कुछ डिफ़ॉल्ट मान लिया जाता है। लेकिन मुझे लगता है कि अगर आप किसी सरणी या किसी प्रकार की सूची को खोजने के लिए एक फ़ंक्शन लिख रहे हैं, और जिस क्षेत्र का आप इंडेक्स को सरणी में रखने के लिए उपयोग कर रहे हैं उसका आकार सबसे बड़ा संभव पता से दोगुना से अधिक है, तो जब अतिप्रवाह की जाँच हो रही है दो इंडेक्स को जोड़ना कड़ाई से आवश्यक नहीं होगा।


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

0

यह मानना ​​अनुचित है कि 64 बिट पूर्णांक सभी संख्याओं को धारण कर सकता है। कई कारण:

  1. अधिकतम और न्यूनतम 64 बिट पूर्णांक परिमित संख्याएं हैं। प्रत्येक परिमित संख्या के लिए एक बड़ा और छोटा परिमित संख्या मौजूद है।

  2. 128 बिट और 256 बिट संख्या के साथ गणना वर्तमान में विभिन्न स्थानों में उपयोग की जाती है। कई प्रोसेसर में विशिष्ट निर्देश होते हैं जो 128 बिट पूर्णांक पर काम करते हैं।

  3. 20 साल पहले, 1 जीबी डिस्क को "बड़ा" माना जाता था। आज एक 1 टीबी डिस्क को छोटा माना जाता है। 20 साल पहले औसत डेस्कटॉप में 16 एमबी रैम थी। मेरे वर्तमान डेस्कटॉप में 16 जीबी से अधिक रैम है। हार्डडिस्क स्पेस और रैम अतीत में तेजी से बढ़े हैं, और भविष्य में तेजी से बढ़ने की भविष्यवाणी की जाती है। जब तक कोई व्यक्ति बहुत अच्छे कारण के साथ नहीं आ सकता है, तो उसे बढ़ना बंद कर देना चाहिए, इसका मतलब यह नहीं है कि यह बंद हो जाएगा।

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