ऐतिहासिक रूप से, बाइट हमेशा आकार में 8-बिट नहीं होते हैं (उस मामले के लिए, कंप्यूटर को द्विआधारी होने की आवश्यकता नहीं होती है, लेकिन गैर-बाइनरी कंप्यूटिंग ने अभ्यास में बहुत कम कार्रवाई देखी है)। यही कारण है कि आईईटीएफ और आईएसओ मानक अक्सर ऑक्टेट शब्द का उपयोग करते हैं - वे बाइट का उपयोग नहीं करते हैं क्योंकि वे यह नहीं मानना चाहते हैं कि इसका मतलब 8-बिट्स नहीं है।
वास्तव में, जब बाइट बनाया गया था तो इसे 1-6 बिट इकाई के रूप में परिभाषित किया गया था। पूरे इतिहास में बाइट आकारों में 7, 9, 36 और परिवर्तनीय आकार के बाइट वाली मशीनें शामिल हैं।
8 वाणिज्यिक सफलता का मिश्रण था, यह लोगों के बारे में सोचने के लिए एक सुविधाजनक पर्याप्त संख्या है (जो एक-दूसरे में खिलाया होता) और इसमें कोई संदेह नहीं है कि मैं पूरी तरह से अनजान हूं।
आपके द्वारा उल्लिखित ASCII मानक 7-बिट बाइट मानता है, और यह पहले 6-बिट संचार मानकों पर आधारित था।
संपादित करें: यह, इस में जोड़ने योग्य हो सकता है के रूप में कुछ आग्रह कर रहे हैं कि उन कह बाइट्स हमेशा ओकटेट कर रहे हैं, शब्दों के साथ भ्रमित बाइट्स हैं।
एक ऑक्टेट 8 बिट्स (आठ से लैटिन से) की इकाई को दिया गया नाम है। यदि आप कंप्यूटर का उपयोग कर रहे हैं (या एक उच्च अमूर्त स्तर पर, एक प्रोग्रामिंग भाषा) जहां बाइट 8-बिट हैं, तो यह करना आसान है, अन्यथा आपको कुछ रूपांतरण कोड (या हार्डवेयर में कवर) की आवश्यकता है। ऑक्टेट की अवधारणा स्थानीय कंप्यूटिंग की तुलना में नेटवर्किंग मानकों में अधिक आती है, क्योंकि आर्किटेक्चर-तटस्थ होने के कारण यह मानकों के निर्माण की अनुमति देता है जिनका प्रयोग विभिन्न बाइट आकारों वाली मशीनों के बीच संचार में किया जा सकता है, इसलिए इसका उपयोग आईईटीएफ और आईएसओ में किया जाता है। मानकों (संयोग से, आईएसओ/आईईसी 10646 का उपयोग करता ओकटेट जहां यूनिकोड स्टैंडर्ड क्या अनिवार्य रूप से है के लिए बाइट उपयोग करता है - उत्तरार्द्ध पर कुछ मामूली अतिरिक्त प्रतिबंधों के साथ - एक ही मानक है, हालांकि यूनिकोड स्टैंडर्ड विस्तार करता है कि वे मतलब ओकटेटबाइट भले ही बाइट विभिन्न मशीनों पर अलग-अलग आकार हो)। ऑक्टेट की अवधारणा ठीक से मौजूद है क्योंकि 8-बिट बाइट आम हैं (इसलिए इन मानकों के आधार के रूप में उनका उपयोग करने का विकल्प) लेकिन सार्वभौमिक नहीं है (इसलिए अस्पष्टता से बचने के लिए किसी अन्य शब्द की आवश्यकता है)।
ऐतिहासिक रूप से, एक बाइट एक चरित्र को स्टोर करने के लिए उपयोग किया जाने वाला आकार था, एक पदार्थ जो बदले में प्रथाओं, मानकों और डी-फैक्टो मानकों पर बनाता है जो पूर्व में कंप्यूटर और टेक्स और अन्य संचार विधियों के लिए उपयोग किए जाने वाले कंप्यूटर, बाउडॉट के साथ शुरू हो रहे थे 1870 (मुझे किसी भी पहले पता नहीं है, लेकिन सुधार के लिए खुला हूँ)।
यह इस तथ्य से देखा जा सकता है कि C और C++ एक बाइट के भंडारण के लिए इकाई में char
जिसका आकार बिट्स में मानक limits.h शीर्षक में CHAR_BIT
द्वारा परिभाषित किया गया है कहा जाता है। एक चरित्र को परिभाषित करने के लिए विभिन्न मशीनें 5,6,7,8,9 या अधिक बिट्स का उपयोग करेंगी। निश्चित रूप से हम पात्रों को 21-बिट के रूप में परिभाषित करते हैं और 8-, 16- या 32-बिट इकाइयों में स्टोर करने के लिए अलग-अलग एन्कोडिंग का उपयोग करते हैं, (और अन्य आकारों के लिए यूटीएफ -7 जैसे गैर-यूनिकोड अधिकृत तरीके) लेकिन ऐतिहासिक रूप से यह था जिस तरह से था।
मशीन आर्किटेक्चर को प्रतिबिंबित करने के बजाए मशीनों में अधिक संगत होने का लक्ष्य रखने वाली भाषाओं में byte
भाषा में तय किया जाता है, और इन दिनों इसका सामान्य अर्थ यह है कि इसे भाषा में 8-बिट के रूप में परिभाषित किया जाता है। इतिहास में बिंदु को देखते हुए उन्हें बनाया गया था, और अधिकांश मशीनों में अब 8-बिट बाइट्स हैं, भेद काफी हद तक मज़बूत है, हालांकि विभिन्न आकार वाले मशीनों पर ऐसी भाषाओं के लिए एक कंपाइलर, रन-टाइम इत्यादि को कार्यान्वित करना असंभव नहीं है। बाइट्स, बस इतना आसान नहीं है।
एक शब्द किसी दिए गए कंप्यूटर के लिए "प्राकृतिक" आकार है। यह कम स्पष्ट रूप से परिभाषित किया गया है, क्योंकि यह कुछ ओवरलैपिंग चिंताओं को प्रभावित करता है जो आमतौर पर सहानुभूति रखते हैं, लेकिन शायद नहीं। मशीन पर अधिकांश रजिस्ट्रार इस आकार होंगे, लेकिन कुछ शायद नहीं। सबसे बड़ा पता आकार आम तौर पर एक शब्द होगा, हालांकि यह मामला नहीं हो सकता है (जेड 80 में 8-बिट बाइट और 1-बाइट शब्द था, लेकिन 16-बिट सहित कुछ 16-बिट समर्थन देने के लिए रजिस्टरों के कुछ दोगुना होने की अनुमति दी गई को संबोधित)।
फिर हम यहाँ देख C और C++ जहां int
और long
शब्द-आकार की दृष्टि से परिभाषित किया गया है के बीच एक अंतर है, एक प्रोसेसर जो एक "लंबे समय शब्द" अवधारणा इस तरह मौजूद होना चाहिए है का लाभ लेने के परिभाषित किया जा रहा संभवतः समान होने के बावजूद किसी दिए गए मामले में int
पर। न्यूनतम और अधिकतम मान सीमाओं में फिर से हैं। हेडर। (दरअसल, जैसे समय बीत चुका है, int
को प्राकृतिक शब्द-आकार से छोटे के रूप में परिभाषित किया जा सकता है, जो कहीं और आम है, इंक की सरणी के लिए स्मृति उपयोग में कमी, और शायद अन्य चिंताओं के साथ स्थिरता के संयोजन के रूप में परिभाषित किया जा सकता है। टी के बारे में पता है)।
जावा और।नेट भाषाएं int
और long
को सभी आर्किटेक्चर में तय किए गए अनुसार परिभाषित करने का दृष्टिकोण लेती हैं, और अंतर के साथ निपटने के लिए रनटाइम (विशेष रूप से जेआईटीटर) के लिए एक समस्या का सामना करना पड़ती है। विशेष रूप से, यहां तक कि .NET में भी एक सूचक के आकार (असुरक्षित कोड में) भाषा-लगाए गए शब्द आकार की बजाय अंतर्निहित शब्द आकार के रूप में आर्किटेक्चर के आधार पर अलग-अलग होंगे।
इसलिए, ऑक्टेट, बाइट और शब्द सभी एक दूसरे से बहुत स्वतंत्र हैं, octet == बाइट के संबंध के बावजूद और शब्द बाइट्स की पूरी संख्या है (और पूरे बाइनरी-राउंड नंबर जैसे 2, 4, 8 आदि) आज) आम है।
[दो बिट्स, चार बिट, छह बिट्स, एक डॉलर] (http://en.wikipedia.org/wiki/Bit_%28money%29) –