2012-07-14 19 views
10

मैंने हमेशा सोचा है कि अग्रणी शून्य (0) का उपयोग — के बजाय ऑक्टल संख्याओं का प्रतिनिधित्व करने के लिए किया जाता है, उदाहरण के लिए — 0o0o का उपयोग उतना ही उपयोगी होगा, लेकिन 0 es (उदाहरण के लिए parseInt('08'); जावास्क्रिप्ट में) के रूप में कई समस्याओं का कारण नहीं होगा। इस डिजाइन पसंद के पीछे क्या कारण हैं?प्रमुख शून्य का उपयोग ऑक्टल संख्याओं का प्रतिनिधित्व करने के लिए क्यों किया जाता है?

उत्तर

17

सभी आधुनिक भाषाएं इस सम्मेलन को सी से आयात करती हैं, जिसने इसे बी से आयात किया, जिसने इसे बीसीपीएल से आयात किया।

बीसीपीएल ने एक्स्टल और #x1234 के लिए हेक्साडेसिमल के लिए #1234 का उपयोग किया। बी इस सम्मेलन से निकल गया है क्योंकि # बी (फ्लोटिंग पॉइंट रूपांतरण के लिए पूर्णांक) में एक यूनरी ऑपरेटर था, इसलिए # 1234 का उपयोग नहीं किया जा सका, और # बेस इंडिकेटर के रूप में प्रतिस्थापित किया गया था 0.

बी के डिजाइनरों ने कोशिश की वाक्यविन्यास बहुत कॉम्पैक्ट बनाने के लिए। मुझे लगता है कि यही कारण है कि उन्होंने दो-वर्ण उपसर्ग का उपयोग नहीं किया था।

1

"0 बी" अक्सर ऑक्टल के बजाय बाइनरी के लिए प्रयोग किया जाता है। अग्रणी "0" है, मुझे " -ctal" पर संदेह है।

यदि आप जानते हैं कि आप पार्सिंग ऑक्टल पा रहे हैं तो parseInt('08', 10); का उपयोग करें ताकि यह आधार दस के रूप में कार्य कर सके।

+0

हाँ, मुझे पता है। मैं केवल यह सोच रहा हूं कि इसका उपयोग क्यों किया जाता है, क्योंकि यह नए लोगों के लिए थोड़ा उलझन में है। '0 बी' के साथ मैंने गलती की है, '0o' पर तय की गई है। – Hauleth

+0

"ज़ीरो" जैसा कि "ऑक्टल" में है? मुश्किल से। मेरी अटकलें यह होगी कि यह दिन का प्रचलित संख्या प्रारूप था, हेक्स अब जैसा है। – tripleee

+0

@ ट्रिपली: आपको एहसास है कि ओ ओ की तरह दिखता है, है ना? ऐसा नहीं है कि लोग y34rs के लिए संख्याओं के साथ 13773rs प्रतिस्थापित नहीं कर रहे हैं। –

संबंधित मुद्दे