बाइट्स आठ बिट्स का इतिहास क्यों है?


86

ऐतिहासिक इकाइयों के रूप में आठ बिट्स के समूहों का उपयोग करने का निर्णय लेने में, ऐतिहासिक ताकतें काम पर कहाँ हैं?

अन्य शब्दों के आकार का उपयोग करते हुए, एक बार मशीनें थीं, लेकिन आज गैर-आठ-बिटनेस के लिए आपको संग्रहालय के टुकड़े, एम्बेडेड अनुप्रयोगों के लिए विशेष चिप्स और डीएसपी को देखना होगा। कंप्यूटर डिजाइन के शुरुआती दिनों की अराजकता और रचनात्मकता से बाइट कैसे विकसित हुई?

मैं कल्पना कर सकता हूं कि कंप्यूटिंग को संभव बनाने के लिए पर्याप्त डेटा को संभालने के लिए कम बिट अप्रभावी होंगे, जबकि बहुत से महंगे हार्डवेयर के लिए नेतृत्व करेंगे। खेलने में अन्य प्रभाव थे? इन बलों ने आठ बिट्स के लिए संतुलन क्यों बनाया?

(BTW, अगर मैं समय यात्रा कर सकता था, तो मैं वापस जाऊंगा जब "बाइट" को 8 बिट्स घोषित किया गया था, और सभी को इसे 12 बिट्स बनाने के लिए मना लिया, उन्हें कुछ शुरुआती 21 वीं सदी के ट्रिंकेट के साथ रिश्वत दी।)


7
यह उन सवालों में से एक हो सकता है जहां हम इसका जवाब अच्छे पुराने विकिपीडिया से बेहतर नहीं दे सकते ।
स्कॉट व्हिटलॉक

10
तो आप 12 बिट्स को 8 तक क्यों पसंद करेंगे?
FrustratedWithFormsDesigner

8
क्या जेस्ट में अंतिम वाक्य है? एक 12-बिट बाइट असुविधाजनक होगा क्योंकि यह 2 की शक्ति नहीं है
रॉब

19
मेमोरी और रजिस्टर तब इतने सस्ते नहीं थे, इसलिए 6 या 9 (36-बिट शब्द के अंश) की तुलना में 8 बिट एक अच्छा समझौता था। इसके अलावा, पता गणना 2 की शक्तियों के साथ बहुत सरल है, और यह मायने रखता है जब आप छोटे ट्रांजिस्टर में कच्चे ट्रांजिस्टर से तर्क बना रहे हैं।
माइक डनलैवी

9
शब्द के आकार का उपयोग करना जो कि 2 की शक्तियां थीं, "शुरुआती दिनों" में इतनी महत्वपूर्ण नहीं थीं। DEC-10 में 36 बिट शब्द था, और CDC 6000 श्रृंखला में 60 बिट शब्द थे, और इंडेक्स रजिस्टर में 18 बिट्स थे।
1849 में जे एलस्टन

जवाबों:


75

5-बिट बॉडोट कोड के साथ वास्तव में बहुत काम किया गया था, लेकिन वे जल्दी ही सीमित हो गए (केवल 32 संभव अक्षर, इसलिए मूल रूप से केवल ऊपरी-अक्षर वाले अक्षर, और कुछ विराम चिह्न, लेकिन अंकों के लिए पर्याप्त "स्थान" नहीं) ।

वहां से, काफी कुछ मशीनें 6-बिट वर्णों में गईं। यह तब भी बहुत अपर्याप्त था - यदि आप ऊपरी और निचले मामले (अंग्रेजी) के अक्षरों और अंकों को चाहते थे, जो विराम चिह्न के लिए केवल दो और वर्ण छोड़ता था, इसलिए अधिकांश में वर्ण सेट में केवल एक ही अक्षर का मामला था।

ASCII ने 7-बिट कैरेक्टर सेट को परिभाषित किया। लंबे समय तक बहुत सारे उपयोगों के लिए यह "काफी अच्छा" था, और साथ ही अधिकांश नए चरित्र सेटों का आधार भी बना है (आईएसओ 646, आईएसओ 8859, यूनिकोड, आईएसओ 10646, आदि)

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

तब से, चरित्र सेट 16 और 32 बिट तक चले गए हैं, लेकिन अधिकांश मुख्यधारा के कंप्यूटर मूल आईबीएम पीसी पर आधारित हैं। फिर से, बाजार के 8-बिट पात्रों के साथ पर्याप्त रूप से पर्याप्त रूप से संतुष्ट है कि भले ही पीसी अपने वर्तमान स्तर के प्रभुत्व में नहीं आया था, मुझे यकीन नहीं है कि हर कोई वैसे भी बड़े पात्रों के साथ सब कुछ करेगा।

मुझे यह भी जोड़ना चाहिए कि बाजार काफी बदल गया है। वर्तमान बाजार में, सॉफ्टवेयर की तुलना में हार्डवेयर द्वारा चरित्र का आकार कम परिभाषित किया गया है। विंडोज, जावा, आदि, बहुत पहले 16-बिट वर्णों में चले गए।

अब, 16- या 32-बिट वर्णों का समर्थन करने में बाधा केवल 16- या 32-बिट वर्णों में निहित कठिनाइयों से न्यूनतम है, और सामान्य रूप से i18n का समर्थन करने की कठिनाई से। ASCII में (उदाहरण के लिए) यह पता लगाना कि क्या कोई अक्षर ऊपरी या निचला मामला है, या दोनों के बीच परिवर्तित करना अविश्वसनीय रूप से तुच्छ है। पूर्ण यूनिकोड / आईएसओ 10646 में, यह मूल रूप से जटिल रूप से जटिल है (इस बिंदु पर कि मानक भी कोशिश नहीं करते हैं - वे टेबल देते हैं, विवरण नहीं)। फिर आप इस तथ्य में जोड़ते हैं कि कुछ भाषाओं / वर्ण सेटों के लिए, ऊपरी / निचले मामले का मूल विचार भी लागू नहीं होता है। फिर आप इस तथ्य में जोड़ते हैं कि उनमें से कुछ में भी वर्ण प्रदर्शित करना अभी भी बहुत अधिक जटिल है।

यह सब पर्याप्त रूप से जटिल है कि सॉफ्टवेयर का विशाल बहुमत भी कोशिश नहीं करता है। स्थिति धीरे-धीरे सुधार रही है, लेकिन धीरे-धीरे ऑपरेटिव शब्द है।


9
मैंने सोचा था कि मैं कहीं भी पढ़ता हूं 8 7 ASCII से आया है और एक सत्यापन बिट की आवश्यकता है क्योंकि लगभग ट्रांसमिशन प्रोटोकॉल नुकसान-कम नहीं थे जैसा कि डिजाइनर चाहते थे :-)।
मार्टिन न्यूयॉर्क

3
@ लोकीअस्तारी, हाँ, इसे समता बिट कहा जाता है, और त्रुटि का पता लगाने या पुनर्प्राप्ति के कच्चे रूपों के लिए इस्तेमाल किया जा सकता है। विकिपीडिया: समानता बिट
एक CVn

2
यह सुनिश्चित नहीं है कि आईबीएम पीसी को इसके साथ क्या करना है। सीपी / एम युग (<1980) में "8 बिट प्रति बाइट" पहले से ही मानक था, जो 8080 सीपीयू (आईबीएम पीसी युग के 8086/8 के पूर्ववर्ती) पर शुरू हुआ था
MSalters

1
@MSalters: मुख्य रूप से यह (यकीनन) हार्डवेयर के विकास को "प्रभावित" करता है। नहीं, 8-बिट्स / बाइट पीसी के साथ नया नहीं था , लेकिन तब तक, हर कुछ वर्षों में अधिकांश आर्किटेक्चर बदल दिए गए थे। पीसी ने काफी हद तक बंद कर दिया है, और एक आर्किटेक्चर लिया है जो विशेष रूप से प्रगतिशील नहीं था जब यह नया था, और इसे दशकों तक संरक्षित रखा ।
जेरी कॉफिन

2
वर्तमान वर्ण सेट 16 या 32 बिट्स नहीं हैं, न ही जावा और विंडोज ऐसे उपयोग करते हैं। वर्तमान वर्ण सेट यूनिकोड है, जिसे सीधे मैप करने के लिए 21 बिट्स की आवश्यकता होती है। वर्तमान सॉफ़्टवेयर 8 (UTF-8), 16 (UTF-16) या 32 (UTF-32) बिट कोड इकाइयों के आधार पर एन्कोडिंग का उपयोग करता है, जहाँ आवश्यक हो, एक कोड बिंदु बनाने के लिए कई कोड इकाइयों को मिलाकर, लेकिन उन बिट्स आकारों का एक परिणाम होता है। हार्डवेयर का, वर्ण सेट का नहीं।
सेबस्टियन रेडल

10

ASCII जानकारी के लिए सात बिट्स, और त्रुटि का पता लगाने वाली समानता के लिए एक।


27
ASCII के लिए 7 बिट्स और एक अतिरिक्त बिट जिसका उपयोग सभी प्रकार की चीजों के लिए किया गया है
मार्टिन बेकेट

1
प्रारंभिक स्मृति से निपटने के दौरान समानता बहुत महत्वपूर्ण थी। 8 बिट डेटा बाइट्स में जाने के बाद भी, समता जाँच के लिए 9 बिट्स के साथ मेमोरी चिप्स थे।
जिम सी

1
यह एक दिलचस्प मुखरता है। क्या विचार का समर्थन करने के लिए कोई ऐतिहासिक डेटा है?
दाविद

6

8-बिट आर्किटेक्चर पर विकिपीडिया पृष्ठ पर एक नज़र डालें । यद्यपि वर्ण सेट 5-, 6- हो सकते थे, फिर 7-बिट, अंतर्निहित सीपीयू / मेमोरी बस आर्किटेक्चर ने हमेशा 2. की शक्तियों का उपयोग किया। बहुत पहले माइक्रोप्रोसेसर (लगभग 1970 के दशक) में 4-बिट बस थी, जिसका अर्थ है कि एक निर्देश 4- आगे बढ़ सकता है बाहरी मेमोरी और सीपीयू के बीच डेटा के बिट्स।

फिर 8080 प्रोसेसर जारी करने के साथ, 8-बिट आर्किटेक्चर लोकप्रिय हो गया और यही से x86 असेंबली इंस्ट्रक्शन सेट की शुरुआत हुई जो इन दिनों भी इस्तेमाल किया जाता है। अगर मुझे अनुमान लगाना है, तो बाइट इन शुरुआती प्रोसेसरों से आया है, जहां मुख्यधारा की जनता पीसी के साथ खेलना और खेलना शुरू कर देती है और 8-बिट्स को डेटा की एकल इकाई का मानक आकार माना जाता है।

तब से बस का आकार दोगुना हो गया है, लेकिन यह हमेशा 2 की शक्ति बनी रही (यानी 16-, 32- और अब 64-बिट) वास्तव में, मुझे यकीन है कि आज की बस के आंतरिक भाग केवल 64 समानांतर तारों की तुलना में बहुत अधिक जटिल हैं, लेकिन वर्तमान मुख्यधारा सीपीयू वास्तुकला 64-बिट है।

मुझे लगता है कि हमेशा दोगुना (50% बढ़ने के बजाय) नए हार्डवेयर बनाने के लिए आसान था जो मौजूदा अनुप्रयोगों और अन्य विरासत घटकों के साथ मिलकर काम करते हैं। इसलिए उदाहरण के लिए जब वे 8-बिट्स से 16 तक गए थे, तो प्रत्येक निर्देश 1 के बजाय अब 2 बाइट ले जा सकता है, इसलिए आप अपने आप को एक घड़ी चक्र से बचाते हैं, लेकिन फिर अंतिम परिणाम समान होता है। हालाँकि, यदि आप 8 से 12-बिट आर्किटेक्चर से गए हैं, तो आप मूल डेटा को आधे में तोड़ देंगे और प्रबंधित कर सकते हैं जो कि कष्टप्रद हो सकता है। ये सिर्फ अनुमान हैं, मैं वास्तव में एक हार्डवेयर विशेषज्ञ नहीं हूं।


5
"बहुत पहले सीपीयू (1970 के आसपास) ..." । आपको कंप्यूटिंग के इतिहास पर कुछ पढ़ने की ज़रूरत है !! एक वॉन न्यूमैन आर्किटेक्चर कंप्यूटर के लिए पहले ही सीपीयू द्वितीय विश्व युद्ध के दौरान बनाया गया था ... या उससे पहले (इतिहास यदि आपको लगता है की जिसका संस्करण के आधार पर।)
स्टीफन सी

और 19 वीं शताब्दी में कंप्यूटिंग डिवाइस थे और मुझे यकीन है कि मिस्र के लोगों के पास कुछ प्रकार के कैलकुलेटर पॉट थे। यह जानकारी मेरे द्वारा लिंक किए गए विकिपीडिया पृष्ठ से आई है। जैसे मैंने कहा, मैं हार्डवेयर विशेषज्ञ नहीं हूं और मैं निश्चित रूप से इतिहासकार नहीं हूं, लेकिन अगर आपको लगता है कि मैं बहुत दूर हूं, तो आप उस विकिपीडिया पेज को अपडेट करना चाहते हैं।
DXM

मुझे लगता है कि अगर मैं अंदर प्रवेश कर रहा था तो मुझे लिंक को खराब करने में मदद नहीं मिलेगी। मैं "पहला सीपीयू" कहने के लिए भी क्षमा चाहता हूं। चूंकि मैं विकि पृष्ठ को उद्धृत कर रहा था, इसलिए मुझे "प्रथम माइक्रोप्रोसेसर" कहना चाहिए था। मेरा मतलब यही था। उसके लिए माफ़ करना।
DXM

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

8-बिट बाइट और 16-बिट शब्द का उपयोग PDP श्रृंखला द्वारा किया जाता है, जिसने 8-बिट बाइट्स की लोकप्रियता में एक कारक भी खेला हो सकता है।
जे एलस्टन

4

एक बाइट विभिन्न रूप से (कम से कम) 1, 4, 6, 7, 8, 9, 12, 18, 20 और संभवतः 36 बिट्स पर निर्भर करता है, जो कि आप किस कंप्यूटर पर देख रहे हैं। मैं यहाँ "बाइट" ले रहा हूँ, जिसका अर्थ है "स्मृति की सबसे छोटी पता योग्य इकाई", किसी भी प्रकार की पाठ-केंद्रित व्याख्या का उपयोग करने के बजाय। (उदाहरण के लिए, लोकप्रिय CPU, 6448-बिट CPU जो लोकप्रिय HP48SX / GX कैलकुलेटर लाइन में उपयोग किया जाता है, निबल्स में मेमोरी को संबोधित करता है - 4-बिट।)

50 के दशक में "आईएएस मशीनों" में 20-बिट बाइट्स बेहद आम थे। 60, 70 के दशक और कुछ हद तक 80 के दशक में 6, 12, 18 (और शायद 36) विभिन्न प्रकार के आर्किटेक्चर में काफी लोकप्रिय थे।

अंत में, "2 की शक्तियों" और "एक पते योग्य इकाई में बिट्स" के बीच एक अच्छा पत्राचार होने से लगता है कि वे जीत गए हैं।


और कभी 10 बिट? मैं Google के साथ मिल सकता है कुछ हाल ही में वीडियो प्रोसेसर 10 बिट हैं।
rslnx

@ शेफ यह संभव है, मैं अभी किसी भी वास्तुकला को याद नहीं कर सकता, जो मेरे पास था (मैं ज्यादातर सामान्य-उद्देश्य वाले कंप्यूटर माना जाता था)।
१२:०२ पर वेटिन

हां, मैं सामान्य प्रयोजन के कंप्यूटर भी मानता हूं। यह अजीब है क्योंकि मुझे लगता है कि यह 10-बिट-बाइट के साथ कितना अच्छा होगा, यह जानने के लिए कि आप 1 बाइट के साथ 1 किलोबाइट, 2 बाइट्स के साथ 1 मेगाबाइट आदि को संबोधित कर सकते हैं, बेशक, यह सिर्फ आराम पर एक
कैपरी

2

पहले थोड़ा सा स्पष्टीकरण: ओकटेट्स (8-बिट इकाइयां) वास्तव में आधुनिक कंप्यूटर आर्किटेक्चर में एक मौलिक इकाई नहीं हैं । कम से कम दो - 2, 4, 16, 32, 64, 128 आदि की अन्य शक्तियों की तुलना में अधिक मौलिक नहीं हैं। 8-बिट प्रोसेसर (इसलिए नाम!) के लिए ऑक्टेट्स मौलिक इकाई थे, लेकिन आधुनिक आर्किटेक्चर आमतौर पर बड़े बिट के साथ काम करते हैं। आंतरिक रूप से सेट करें। उदाहरण के लिए x86_64 में 64 बिट पूर्णांक रजिस्टर और 80 बिट फ़्लोटिंग पॉइंट रजिस्टर हैं। रैम को 64-बिट चंक्स में पढ़ा और लिखा गया है, और प्रोसेसर सिर्फ जादू का उपयोग करता है ताकि यह दिख सके कि आप व्यक्तिगत 8-बिट बाइट्स को संबोधित कर सकते हैं।

पुराने आर्किटेक्चर के लिए, "बाइट" ने डेटा बस के आकार का संकेत दिया, और जैसा कि मूल प्रश्न बताता है, बहुत सारे विभिन्न बस आकार मौजूद थे (4, 5, 6, 8, 12 आदि)। लेकिन 1993 के बाद से बाइट को 8 बिट्स के रूप में परिभाषित किया गया है , जिसमें डेटा आकार के लिए एक मानकीकृत एसआई इकाई है। इसलिए "बाइट" का अर्थ वास्तुकला-निर्भर इकाई से वास्तुकला-स्वतंत्र मानकीकृत इकाई में बदल गया है।

इसलिए इन दिनों, बाइट्स डेटा को संबोधित करने और मात्रा देने के लिए मानक इकाई हैं, लेकिन वास्तव में अन्यथा मौलिक नहीं हैं।

ऑक्टेट्स इकाई भंडारण के बारे में चिंताओं के कारण मुख्य रूप से भंडारण के लिए डी-फैक्टो मानक बन गई। पाठ संग्रहीत करने के लिए आप आदर्श रूप से एक वर्ण को संग्रहीत करने के लिए एक बाइट चाहते हैं। दो कारक महत्वपूर्ण थे:

  • ऐसी इकाइयाँ होना जो दो (2, 4, 8, 16, 32 आदि) की शक्तियाँ हैं, डिजिटल सिस्टम को डिजाइन करते समय अधिक सुविधाजनक है।
  • 8-बिट ASCII वर्ण सेट में एकल चरित्र को संग्रहीत करने के लिए पर्याप्त है (सिरिलिक कहने के लिए समर्थन सेट करने के लिए कमरे को खाली करने के लिए कमरे के साथ)।

बेशक 8-बिट्स सभी लिपियों का समर्थन करने के लिए पर्याप्त नहीं हैं - जापानी की तरह कुछ को कम से कम 16 बिट्स की आवश्यकता होती है (और इसके लिए क्या मूल्य है, यूनिकोड 21 बिट्स है), लेकिन उस समय बिट्स महंगे थे और अधिकांश डिजिटल पाठ में थे ASCII रेंज वैसे भी।

इन दिनों, पाठ आम तौर पर यूटीएफ -8 जैसी चर-चौड़ाई के एन्कोडिंग में संग्रहीत किया जाता है, और यूनिकोड के पात्रों के संयोजन जैसी चीजों के साथ, "एक बाइट एक वर्ण के बराबर" लंबे समय से अतीत की बात है। आज बाइट वास्तव में ऐतिहासिक कारणों के लिए सिर्फ मानक है।


1

मेरी जानकारी के अनुसार शब्द बाइट स्वयं आठ-आठ शब्द (आठ) बिट्स शब्द से आया था। 8 बिट्स शब्दों में हमें जो सुविधा मिलती है, वह मूल्य 00000000 = 00 और 11111111 = FF (हस्ताक्षर के लिए दिसम्बर 255 और हस्ताक्षर के लिए -127) के बाद से हेक्साडेसिमल मूल्यों में रूपांतरण है। बिट-वार सहित ऐसी संरचना में सभी अंकगणितीय संचालन करना आसान है संचालन।

मैं बाइट्स (8 बिट्स शब्द) को प्राकृतिक रूप से छोटे आकार के 3 बिट्स के प्राकृतिक विकास के रूप में देखता हूं, जो हास्यास्पद रूप से छोटे 60 बिट्स शब्दों से


मैं उसके लिए एक संदर्भ देखना चाहूंगा। मुझे गंभीरता से संदेह है। विशेष रूप से "बाइट" शब्द के रूप में, सी मानक में उपयोग किया जाता है और सी ++ मानक में शामिल है, इसका मतलब "8 बिट" नहीं है। एक 8 बिट मात्रा एक ओकटेट है।
gnasher729

0

एक बाइट में 8 बिट्स नहीं होते हैं , लेकिन ऐसा प्रतीत होता है कि C और C ++ कम से कम 8 बिट्स के रूप में एक बाइट को परिभाषित करते हैं (हालांकि यह अधिक हो सकता है)। स्टैक ओवरफ्लो पर इस सवाल में कुछ प्रणालियों का उल्लेख है जहां 1 बाइट 8 बिट्स नहीं है।


सी ++, या संकलक ?
बबिकर

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