ऑक्टल्स कहाँ उपयोगी हैं? [बन्द है]


36

मैं बस कुछ 20 मिनट के लिए मेज के खिलाफ अपना सिर पीट रहा हूं और पीएचपी में पूरी तरह से अजीब बग को देख रहा हूं, और फिर मुझे महसूस हुआ कि वहां अष्टकोणीय है। <% (* & #> अष्टक।

संक्षेप में, मैंने शून्य के साथ कुछ शाब्दिक अर्थ लगाए ताकि कोड गठबंधन हो जाए, मुझे पता है, बड़ी गलती। ऑक्टल्स के बारे में भूल गए।

सवाल यह है कि क्या कोई फ़ाइल अनुमतियों के अलावा किसी अन्य चीज़ के लिए ऑक्टल्स का उपयोग करता है? (मैं व्यक्तिगत रूप से पसंद करता chmod ugo+rwxहूं, लेकिन मैं समझता हूं कि अगर उन्हें प्रोग्रामेटिक उत्पन्न करना है, तो यह ऑक्टल्स का उपयोग करने के लिए उपयोगी है।) लेकिन क्या वे किसी अन्य स्थिति में उपयोगी हैं?


16
विकल्प A: खुद को दोष दें। विकल्प बी: दुनिया को दोष दें। विकल्प सी: चकली जैसा कि आपने कुछ सीखा है।
नौकरी

12
@Petrozza - IMO ऑक्टल को इंगित करने के लिए एक अग्रणी शून्य का सी-शैली का उपयोग कभी भी एक अच्छा विकल्प नहीं था, लेकिन यह इतिहास है - शायद सी विरासत का एक सा है, हालांकि यह और भी पुराना हो सकता है। मुझे लगता है कि आद्या के पास बेहतर सम्मेलनों में से एक है - एक अष्टक संख्या 8 # 1234567 # लिखी जाएगी, एक हेक्स संख्या 16 # abcdef #, आदि और अग्रणी शून्य सिर्फ शून्य हैं - 2 से 16 तक कोई भी आधार (कम से कम) वैध है , और सभी नेत्रहीन स्पष्ट और समझने में आसान हैं।
स्टीव

2
@Petruza अपने मूल रूप में आपका प्रश्न इस साइट के लिए रचनात्मक नहीं था, और इसे समुदाय द्वारा सुधार दिया गया था ताकि यह खुला रह सके: कृपया लोग इस बारे में अधिक जानकारी के लिए FAQ देखें कि लोग ऐसा क्यों करते हैं और हम इसे क्यों प्रोत्साहित करते हैं। यदि आपके कोई अतिरिक्त प्रश्न या चिंताएँ हैं, तो कृपया उन्हें हमारे मेटा-चर्चा स्थल पर उठाएँ , न कि आपके प्रश्न में।

11
विकल्प D: "दोष PHP" हमेशा समस्या का परवाह किए बिना सही विकल्प है,
सेफालोपॉड

2
@ स्टीव ३१४ मैं पूरी तरह सहमत हूँ। एक और उल्लेखनीय उदाहरण पायथन है, जहां उनके पास 0oउपसर्ग है (जो कि संगत है 0xऔर 0bलेकिन इससे अलग होना शायद थोड़ा मुश्किल है 00)। और पायथन 3 के बाद से, इस तरह के कीड़े को रोकने के लिए अतिरिक्त अग्रणी शून्य एक वाक्यविन्यास त्रुटि है।
5gon12eder

जवाबों:


42

विकिपीडिया के अनुसार , अष्टक उतने सामान्य नहीं हैं जितने कि वे हुआ करते थे। जैसा कि दूसरों ने पहले ही उल्लेख किया है, अतीत में, सिस्टम में एक 12/24/36-बिट शब्द हुआ करता था, जो कि हेक्साडेसिमल की तुलना में अष्टक में अधिक आसानी से दर्शाया जाता है, लेकिन वर्तमान में, x86 और i64 आर्किटेक्चर 16/32-64 बिट का उपयोग करते हैं शब्द, जो अधिक आसानी से हेक्साडेसिमल में दर्शाया गया है और ओक्टल में नीचे की ओर बदसूरत है।

वर्तमान उपयोग, हालांकि, शामिल हैं:

ध्यान दें कि आधुनिक प्रोग्रामिंग लैंग्वेज कभी-कभी उपयोग-मामलों की कमी और बग की क्षमता के कारण ऑक्टल्स का समर्थन नहीं करती हैं। C # एक उदाहरण है, जैसा कि Eric Lippert ने TCPL 3rd और 4th संस्करण में लिखा है :

C # दो कारणों से अष्टक शाब्दिक का समर्थन नहीं करता है। पहला, शायद ही कोई इन दिनों अष्टाक्षर का उपयोग करता हो। दूसरा, यदि मानक "अग्रणी शून्य का अर्थ ऑक्टल" प्रारूप में C # समर्थित ऑक्टल है, तो यह त्रुटियों का संभावित स्रोत होगा। इस कोड पर विचार करें:

    FlightNumber = 0541;

स्पष्ट रूप से यह अभिव्यक्ति दशमलव शाब्दिक है न कि एक अष्टक शाब्दिक।

संबंधित, और सिर्फ संदर्भ और जिज्ञासा के लिए, कोड, द हिडन लैंग्वेज ऑफ कंप्यूटर हार्डवेयर में पृष्ठ 55 - 63 पर अष्टक और अन्य संख्या प्रणालियों पर एक उत्कृष्ट आसान-से-अनुसरण स्पष्टीकरण है ।


1
उपयोगकर्ता इनपुट को हैंडल करते समय उस नोट पर, जावास्क्रिप्ट के लिए देखें। parseInt(011)==9
डेरेन

3
यह वास्तव में युकी और पॉमियन के बारे में दिलचस्प है। यह सिर्फ मेरे लिए हुआ है कि हेक्साडेसिमल फिंगर काउंटिंग काफी आसान है, यदि आप प्रत्येक उंगली के अंदर का उपयोग करते हैं, तो कुछ भिन्नता का उपयोग करते हुए, इस तरह से
ocodo

@Slomojo - आप अपनी उंगलियों पर 99 तक गिन सकते हैं , वास्तव में ...
2

3
बहुत व्यापक उत्तर के लिए +1। ग्रेस हॉपर ने एक बार कहा था कि उन्हें अपनी चेकबुक को संतुलित करने में परेशानी थी, क्योंकि वह अष्टक में जोड़ने में इतनी कुशल हो गई थीं।
मैकनील

14
@ अगर मुझे पता है कि मुझे बड़ी संख्याओं की गणना करने की आवश्यकता है, तो मैं अपने 10 अंकों को बिट्स के रूप में उपयोग करूंगा और 1024 को केवल अपनी उंगलियों के साथ गिनूंगा (सावधान रहें जो आप # 4, # 128 और # 132 दिखाते हैं)।
zzzzBov

17

डिजिटल उपकरण कॉर्प (डीईसी) और अन्य कंपनियों द्वारा कुछ 50 साल पहले ऑक्टल का व्यापक रूप से उपयोग किया गया था, जिसमें 12-बिट शब्द (जैसे पीडीपी -8) या छह के अन्य गुणकों वाले कंप्यूटर थे, जैसे कि 18 और 36 (जैसे UNIVAC 1108) )। मैंने धीरे-धीरे स्कूल में पीडीपी -8 और यूनीवैक 1108 दोनों का उपयोग किया। दोनों मशीनों में वर्ण आमतौर पर छह बिट्स का उपयोग करते थे, 8 नहीं।

पीडीपी -8 निर्देश प्रारूप

पीडीपी -8 निर्देश प्रारूप - ध्यान दें बिट्स की संख्या 0 -> 11. बिट 0 एमएसबी (सबसे महत्वपूर्ण बिट) थी।

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

दिलचस्प बात यह है कि जब मोटोरोला अपने 68000 माइक्रोप्रोसेसर के साथ बाहर आया था, जो पीडीपी -11 से काफी प्रभावित था और निर्देशों में वही 3-बिट मोड और रजिस्टर फ़ील्ड था, तो उन्होंने अपने प्रलेखन में केवल हेक्साडेसिमल का उपयोग करने का विकल्प चुना।

क्योंकि पीडीपी -11 ने ऑक्टल नोटेशन का उपयोग किया था, यूनिक्स के लिए मूल अनुमति कोड, जो पहली बार पीडीपी -11 पर दिखाई दिया था, ने भी ऑक्टल का उपयोग किया था। यह विरासत लिनक्स में बनी हुई है, जहां अब भी तीन बिट 'rwx' फ़ील्ड्स को निर्दिष्ट करने के लिए chmod कमांड ऑक्टल का उपयोग करता है।

कुछ और सामान्य ज्ञान - CompuServe, जो कि 1980 और 1990 के दशक की शुरुआत में (AOL द्वारा ओवरहैड होने से पहले) एक व्यापक रूप से इस्तेमाल की जाने वाली डायल-अप ऑनलाइन सेवा थी, डीईसी मिनिकॉमपॉइंट्स पर चलती थी, कम से कम मूल रूप से। सभी उपयोगकर्ता आईडी संख्यात्मक थे, और कुछ बिंदु पर मैंने अवलोकन किया कि उनमें कभी भी कोई 8 या 9 शामिल नहीं है, इस प्रकार वे अष्टक में थे। मेरी पुरानी सीआईएस आईडी 70205 थी।


1
PDP-11 प्रलेखन के बारे में आपकी टिप्पणी गलत है। पीडीपी -11 में 8 रजिस्टर थे। R0-R5 सामान्य प्रयोजन रजिस्टर थे। R6 स्टैक पॉइंटर था, और R7 पीसी था। एमओवी निर्देश में दो 3-बिट रजिस्टर नंबर और दो 3-बिट एड्रेसिंग मोड थे। ऑक्टल रजिस्टर और मोड फ़ील्ड को सही तरीके से कैप्चर करता है। (मुझे दृढ़ता से संदेह है कि यह एक दुर्घटना थी।) हेक्स का उपयोग करके सब कुछ भ्रमित हो जाता। PUSH और POP केवल R6 का उपयोग करने वाले मोड को संबोधित कर रहे थे। तत्काल ऑपरेंड एक एड्रेसिंग मोड था जिसमें R7 का उपयोग किया जाता था।
जॉन आर। स्ट्रॉहम

@ JohnR.Strohm टिप्पणी के लिए धन्यवाद 3-बिट रजिस्टर। मैं आपके विश्लेषण से सहमत हूं और मैंने अपना उत्तर अपडेट कर दिया है।
tcrosley

इसलिए DEC ने OCT में काम किया। भ्रम से बचने के लिए सिर्फ 3.32 बिट्स के गुणकों का उपयोग किया जाना चाहिए।
user234461

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

11

हीथकिट ने उन्हें अपने एच -8 के फ्रंट पैनल के लिए, और उनके फ्रंट-पैनल सॉफ़्टवेयर की विधानसभा भाषा लिस्टिंग के लिए उपयोग किया (जिसे PAM-8 कहा जाता है)। खुद को डेटिंग, मुझे पता है।

यहाँ छवि विवरण दर्ज करें

आजकल ऑक्टल्स बहुत दुर्लभ हैं; हर कोई हेक्स का उपयोग करने लगता है। लेकिन संख्याएं अभी भी ऑक्टल में संख्याओं की तरह दिखती हैं, और आपको एफ के माध्यम से अंक ए के लिए अतिरिक्त पंक्ति की आवश्यकता नहीं है।


2
एच -8 के लिए +1। बाहर की ओर अष्टभुजाकार होने के बावजूद, CPU एक 8080A था, जो सभी बाइट्स था। अंजीर जाना।
Blrfl

मुझे लगता है कि उन्होंने H-11 (जिसमें PDP-11 CPU था) के साथ समानता के लिए अष्टक का उपयोग किया था।
जेरी कॉफिन

2
8080 में 8-बिट बाइट्स थे, लेकिन अगर हेक्स की तुलना में ऑक्टल में देखा जाए तो इंस्ट्रक्शन सेट ने अधिक अर्थ दिया।
RBerteig

6

ऑक्टल का उपयोग करने के कारणों में से एक कारण यह है कि यह सबसे बड़ा आधार है जो 2 की शक्ति है जिसके लिए आपको किसी विशेष वर्ण की आवश्यकता नहीं है - अर्थात, सभी अंक संख्यात्मक हो सकते हैं। बेस 16 (बेस 8 से अगले एक) को गैर-संख्यात्मक अंकों (आमतौर पर ए, बी, सी, डी, ई, एफ) की आवश्यकता होती है।


मुझे पता है कि यह पुराना है, लेकिन केवल संख्यात्मक अंकों का उपयोग करना भी अक्षरों का उपयोग करने के लिए बेहतर क्यों होगा?
पेत्रुजा

5

मैं हर दिन अष्टधातु का उपयोग करता हूं। हर बार जब मुझे किसी फ़ाइल का उपयोग करने की आवश्यकता होती है, तो मैं ऑक्टल का उपयोग करता हूं (मैं पूर्व तिथि u + r संकेतन ...)। हर बार जब मैं एक स्ट्रिंग के अंदर एक नियंत्रण चरित्र को एम्बेड करना चाहता हूं तो मैं ऑक्टल का उपयोग करता हूं ... (हां, मैं हेक्स का उपयोग कर सकता हूं, लेकिन ऑक्टल वह है जो मैं उपयोग करता हूं)।


2
+1 के लिए "लेकिन अष्टक वही है जो मैं उपयोग करता हूं" :)
जोएलफैन

5

जिस किसी को भी बिट्स के समूह को कंधों में व्यक्त करने की आवश्यकता है।

कोई हेक्स का उपयोग क्यों करता है?


मेरे सिर के ऊपर की चीजें जो अष्टक संख्या के रूप में व्यक्त की जाती हैं:

  • हवाई जहाज में मोड 3 ए ट्रांसपोंडर द्वारा स्क्वॉड किए गए कोड
  • ARINC 429 एवियोनिक्स बस में पाए गए कुछ मूल्य
  • SCSI पते
  • ncursesपुस्तकालय में प्रमुख कोड

11
अंतर यह है, हेक्स "प्राकृतिक" है जो आधे बाइट के रूप में है। दो हेक्स अंक = 1 बाइट। लेकिन आप बाइट को ऑक्टल अंकों में विभाजित नहीं कर सकते हैं।
मेसन व्हीलर

2
पहली पंक्ति स्पष्ट बताती है। दूसरा एक गरीब सादृश्य बनाता है।
192

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

6
एक विशिष्ट हेक्स स्ट्रिंग स्पष्ट रूप से एक हेक्स स्ट्रिंग है। अष्टक नहीं है।
पॉल नाथन

1
@ ब्लरफ्ल: तो इनमें से कितने का उल्लेख किया गया है "[तीन चीजों के समूह में व्यक्त किए जाने की आवश्यकता है]" विहित उदाहरण के अलावा हैं? यह वास्तविक प्रश्न है, जिसे आपने अभी तक अनुत्तरित छोड़ दिया है। इसके बजाय आप अभी तक एक और गरीब सादृश्य बनाते हैं। नहीं है वास्तविक उपयोग क्योंकि हम बस इसे संभाल करने के लिए सीखा है, दशमलव प्रतिनिधित्व के लिए। कौन सा होगा आप तेजी से गणना? 7 * 6या 07 * 06? हम संख्याओं का प्रतिनिधित्व करने के लिए दशमलव का उपयोग करते हैं क्योंकि हम उन्हें सबसे अच्छी तरह से संभाल सकते हैं और संख्याओं का प्रतिनिधित्व करने के लिए हेक्स करते हैं कि मशीन उन्हें कैसे संग्रहीत करती है। और हम यह बहुत कुछ करते हैं। यह साइट इसके सबूतों से भरी है।
back2dos

5

जब मैंने सीडीसी मेनफ्रेम (एक 60-बिट शब्द, पीपीयू के लिए 12-बिट शब्द) के साथ काम किया, तो सभी कोर डंप और ऐसे ऑक्टल (प्रति शब्द 20 ऑक्टल अंक, प्रति पीपीयू शब्द 4) में किए गए थे।


3

हेक्साडेसिमल की तरह, कभी-कभी वर्ण कोड निर्दिष्ट करने के लिए ऑक्टल नोटेशन का उपयोग किया जाता है। यह उसी कारण से आसान हो सकता है कि हेक्साडेसिमल है: यह बाइनरी की तुलना में अधिक कॉम्पैक्ट है, लेकिन आपके सिर में बाइनरी का अनुवाद करना बहुत आसान है।


2

हेक्स की तरह, ऑक्टल नंबर बाइनरी से बदलना आसान है। सही पर शुरू करके, तीन के समूहों में बाइनरी अंकों को समूहबद्ध करें।

10010101110  // binary

// conversion
(010)(010)(101)(110)
// so, in octal we have...
(2)(2)(5)(6)
2256

10010101110 (base 2) == 2256 (base 8)

7
यह स्पष्ट है। सवाल यह है कि यह वास्तव में कब इस्तेमाल किया जाता है
192

2
@ back2dos: तो कृपया एक ही टिप्पणी को कई बार छोड़ने के बजाय उत्तर पोस्ट करने के लिए स्वतंत्र महसूस करें।
एड एस।

4
@Ed S. आपने प्रश्न का उत्तर देने का प्रयास भी नहीं किया। आपने कुछ स्पष्ट कहा कि मूल पोस्टर लगभग निश्चित रूप से पहले से ही इसका उत्तर जानता था। जैसा कि मध्यस्थ कहने के शौकीन हैं, यह वह नहीं है जिसकी हम शूटिंग कर रहे हैं। अधिक के लिए meta.programmers.stackexchange.com/questions/1968/… देखें ।
btilly

@ back2dos, btilly - Stackexhange साइटों पर उत्तर केवल ओपी के लिए नहीं हैं, वे अपने गुजरने वाले पाठक के लिए एक निरंतर संसाधन बन जाते हैं। सभी स्पष्ट तथ्य, जरूरी नहीं कि सभी के लिए स्पष्ट हो, अगर यह जवाब किसी के लिए पैसा छोड़ने में मदद करता है, जिसके पास इसका मूल्य है।
ओसोडो

2
@Slomojo उस तर्क से हालांकि, हर सवाल एक विषय के हर संबंधित पहलू के लिए विकी बनने के लिए पात्र है। मुद्दा यह है कि यह सवाल का जवाब नहीं देता है । यह उत्तर निश्चित रूप से कहीं और मान्य हो सकता है, "कैसे जल्दी से मानसिक रूप से अष्टक में परिवर्तित हो जाए?"
निकोल

2

नहीं। कभी उनका इस्तेमाल नहीं किया। फ़ाइल अनुमतियां सेट करने के लिए भी नहीं, क्योंकि मैं ऐसा शायद ही कभी करता हूं तो मुझे पढ़ने में मुश्किल होती है।

तो हां, रूपांतरण से और बाइनरी में स्पष्ट लाभ है।
हालाँकि, जैसा कि पहले ही @Mason द्वारा बताया गया है, हेक्स कहीं अधिक "प्राकृतिक" है, क्योंकि 2 हेक्स अंक एक बाइट बनाते हैं। 24/32 बिट आरजीबी / एआरजीबी रंग, आईपी पते, बाइट मास्क आदि का प्रतिनिधित्व करने के लिए काम आता है। दूसरी तरफ ऑक्टल वास्तव में व्यावहारिक नहीं है, क्योंकि आपके पास शायद ही कभी परिदृश्य होते हैं जहां आप 3-बिट समूहों के संदर्भ में काम करते हैं।

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


2

थोड़ा हटकर, लेकिन लंदन भूमिगत पर एक सार्वजनिक उपयोग है। प्रत्येक ट्रेन की भौतिक पहचान और शेड्यूल में एक अलग पहचान है जो सेवा में प्रदर्शित होने पर प्रदर्शित होती है - यहाँ देखें: https://upload.wikimedia.org/wikipedia/commons/4/49/LUL-S-Stock-at -Watford.jpg (गंतव्य प्रदर्शन के शीर्ष पर 402 ध्यान दें)। हालाँकि डिस्प्ले के लिए इलेक्ट्रॉनिक्स bog मानक दशमलव-आधारित हैं, आप कभी भी अंक 8 या 9 नहीं देखते हैं क्योंकि वे सिग्नलिंग सिस्टम में लीगेसी ऑक्टेल-आधारित हार्डवेयर से बंधे होते हैं।

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