2015-09-10 14 views
9

अधिकांश बाइट्स में एक बाइट में 8 बिट होते हैं।बाइट क्यों मौजूद हैं? हम बिट्स का उपयोग क्यों नहीं करते?

एक बाइट आमतौर पर प्रोग्रामर का उपयोग करने वाले सबसे छोटे डेटा प्रकार का प्रतिनिधित्व करता है। भाषा के आधार पर, डेटा प्रकारों को char या byte कहा जा सकता है।

कुछ प्रकार के डेटा (बूलियन, छोटे पूर्णांक, आदि) हैं जिन्हें बाइट की तुलना में कम बिट्स में संग्रहीत किया जा सकता है। फिर भी एक बाइट से कम का उपयोग किसी भी प्रोग्रामिंग भाषा द्वारा समर्थित नहीं है जिसे मैं जानता हूं (मूल रूप से)।

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

बस अगर कोई पूछता है: मैं इसके बारे में चिंतित नहीं हूं। मेरे पास कोई विशिष्ट ज़रूरत नहीं है। मैं सिर्फ उत्सुक हूँ।

+1

कुछ syste एमएस 8 बिट्स –

+0

@ एमएम ट्रू के बजाय अन्य बाइट आकार का उपयोग करें। लेकिन अधिकांश आधुनिक प्रणालियां जो मैं समझता हूं उससे 8 का उपयोग करती हैं। किसी भी विशिष्ट प्रणाली पर उपयोग की जाने वाली संख्या के बावजूद, मेरा प्रश्न बनी हुई है: बाइट्स का कारण क्या है? –

+0

अमूर्तता के बिना जीवन की कल्पना करो। – paddy

उत्तर

4

क्योंकि हार्डवेयर स्तर की स्मृति पर स्वाभाविक रूप से संबोधित करने योग्य हिस्सों में व्यवस्थित किया जाता है। छोटे टुकड़ों का मतलब है कि आप 4 बिट संख्याओं की तरह अच्छी तरह से दानेदार चीजें प्राप्त कर सकते हैं; बड़े भाग अधिक कुशल संचालन के लिए अनुमति देते हैं (आमतौर पर एक सीपीयू चीजें 'भाग' या इसके कई हिस्सों में घूमती है)। विशेष रूप से बड़े एड्रेस करने योग्य भाग बड़े पते की जगहों के लिए बनाते हैं। यदि मेरे पास भाग हैं जो 1 बिट हैं तो 1 - 500 की पता सीमा केवल 500 बिट्स को कवर करती है जबकि 500 ​​8 बिट भाग 4000 बिट्स को कवर करते हैं।

नोट - यह हमेशा 8 बिट नहीं था। मैंने एक मशीन पर काम किया जो 6 बिट्स में सोचा था। (अच्छा पुराना ऑक्टल)

1

मेरी राय में, यह संबोधित करने का मुद्दा है। डेटा के अलग-अलग बिट्स तक पहुंचने के लिए, आपको व्यक्तिगत बाइट्स तक पहुंचने के उपयोग के मुकाबले आठ गुना अधिक पते (प्रत्येक पते पर 3 बिट जोड़ना) की आवश्यकता होगी। बाइट आमतौर पर एक कार्यक्रम में एक संख्या रखने के लिए सबसे छोटी व्यावहारिक इकाई होने जा रहा है (केवल 256 संभावित मूल्यों के साथ)।

+0

उत्तर के लिए धन्यवाद। मैं तब सोच रहा हूं: क्या 8 गुना से अधिक पते समस्याएं पैदा करते हैं? –

+0

@TomDworzanski मुझे लगता है कि 8-बिट प्राकृतिक आकार है। क्योंकि 4-बिट अंग्रेजी वर्णमाला भी नहीं रख सकता है। यह बिल्कुल उपयोगी नहीं है। और कुछ डेटा मैनिपुलेशन के लिए 16-बिट बहुत बड़ा है, उदा। पाठ डेटा – cshu

+1

@TomDworzanski जैसा कि मैंने समझाया है लेकिन खराब तरीके से वाक्यांश दिया गया है, जिसमें 8 गुना अधिक पते होने के लिए पते में डेटा के 3 अतिरिक्त बिट्स की आवश्यकता होती है ताकि यह निर्धारित किया जा सके कि कौन सा बिट चुना जा रहा है। कुल मिलाकर, यह बहुत अक्षम होगा, विशेष रूप से स्वयं द्वारा बिट्स पर विचार करना लगभग बेकार है। कल्पना करें कि एक शहर की योजना है जहां प्रत्येक इमारत में आठ कमरे हैं, और प्रत्येक कमरे में एक अनूठा पता है।यदि आप पूरी तरह से इमारतों की पहचान करना चाहते हैं, तो प्रति भवन सात अनियंत्रित पते हैं। यह एक समान परिदृश्य है। – sneelhorses

0

देर रात कुछ लिखने के लिए मेरे लिए अच्छा तरीका!

आपका अंक हैं पूरी तरह से वैध है, तथापि, इतिहास हमेशा हो जाएगा कि पागल घुसपैठिया कैसे अपनी योजनाओं से काफी समय पहले आप पैदा हुए थे बर्बाद कर दिया गया होता।

स्पष्टीकरण के प्रयोजनों के लिए, बिटल (टीएम) के अंदर या कुछ ऐसा नाम के एक आर्किटेक्चर के साथ एक नकली मशीन की कल्पना करें। बिटल विनिर्देशों का जनादेश है कि सेंट्रल प्रोसेसिंग यूनिट (सीपीयू, यानी, माइक्रोप्रोसेसर) एक-बिट इकाइयों में मेमोरी एक्सेस करेगा। अब मान लें कि एक Bitel सचालित मशीन की दी गई उदाहरण एक स्मृति इकाई 32 अरब बिट्स (एक 4GB RAM इकाई के हमारे फर्जी समकक्ष) धारण किया है करते हैं।

अब, चलो देखते हैं क्यों Bitel, Inc दिवालिएपन में मिल गया है:

  • की बाइनरी कोड किसी भी दिया कार्यक्रम विशाल होगा (संकलक हर एक बिट में हेरफेर करने के लिए होगा!)
  • 32-बिट पतों होगा (और भी अधिक) स्मृति की सिर्फ 512MB धारण करने के लिए सीमित कर दिया। 64-बिट सिस्टम सुरक्षित होगा (अब के लिए ...)
  • मेमोरी तक पहुँचता सचमुच एक गतिरोध होगा।जब सीपीयू उन 48 बिट यह एक एकल ADD अनुदेश पर कार्रवाई करने की जरूरत है के सभी मिल गया है, फ्लॉपी पहले से ही लंबे समय के लिए spinned होता है, और आप जानते हैं कि आगे क्या होता है ...
  • कौन **** वास्तव में एक बिट अनुकूलित करने की आवश्यकता है? (पिछले दिवालियापन औचित्य देखें)।
  • यदि आपको एकल बिट्स को संभालने की आवश्यकता है, तो bitwise operators का उपयोग करना सीखें!
  • प्रोग्रामर दोनों कॉफी और रैम बहुत महंगा हो जाएंगे। फिलहाल, यह सर्वनाश का एकदम सही पर्याय है।
  • सी मानक पवित्र और पवित्र है, और यह अनिवार्य है कि न्यूनतम पता योग्य इकाई (यानी, char) कम से कम 8 बिट्स चौड़ा होगा।
  • 82 की एक परिपूर्ण शक्ति है। (1 एक और एक हुंह है, लेकिन ...)
0

सबसे पहले, C और C++ bit-fields के लिए देशी समर्थन की क्या ज़रूरत है।

#include <iostream> 
struct S { 
    // will usually occupy 2 bytes: 
    // 3 bits: value of b1 
    // 2 bits: unused 
    // 6 bits: value of b2 
    // 2 bits: value of b3 
    // 3 bits: unused 
    unsigned char b1 : 3, : 2, b2 : 6, b3 : 2; 
}; 
int main() 
{ 
    std::cout << sizeof(S) << '\n'; // usually prints 2 
} 

शायद एक जवाब प्रदर्शन और स्मृति संरेखण में है, और तथ्य यह है कि (मैं आंशिक रूप से लगता है क्योंकि byte सी में char कहा जाता है) बाइट मशीन शब्द है कि एक 7-बिट ASCII धारण कर सकते हैं का सबसे छोटा हिस्सा है। टेक्स्ट ऑपरेशंस आम हैं, इसलिए सादा पाठ के लिए विशेष प्रकार प्रोग्रामिंग भाषा के लिए इसका लाभ है।

0

कुछ CPUs बाइट्स की बजाय स्मृति को संबोधित करने के लिए शब्दों का उपयोग करते हैं। यह उनका प्राकृतिक डेटा प्रकार है, इसलिए 16 या 32 बिट्स। अगर इंटेल सीपीयू ने किया तो यह 64 बिट होगा।

8 बिट बाइट पारंपरिक हैं क्योंकि पहले लोकप्रिय घरेलू कंप्यूटर 8 बिट्स का इस्तेमाल करते थे। 256 मूल्य बहुत उपयोगी चीजें करने के लिए पर्याप्त हैं, जबकि 16 (4 बिट्स) काफी पर्याप्त नहीं हैं।

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

इसके अलावा, इंटेल/AMD सीपीयू इतना अतिरिक्त डिकोडिंग काम कर रही इतना अतिरिक्त सिलिकॉन है कि मामूली अंतर 8 बिट बनाम 64 बिट एड्रेसिंग में कोई ध्यान देने योग्य ओवरहेड नहीं जोड़ता है। सीपीयू का मेमोरी कंट्रोलर निश्चित रूप से 8 बिट्स का उपयोग नहीं कर रहा है। यह डेटा को लंबी धाराओं में कैश में खींचता है और न्यूनतम आकार कैश लाइन होता है, अक्सर 64 बाइट उर्फ ​​512 बिट्स। अक्सर रैम हार्डवेयर शुरू करने में धीमा होता है लेकिन स्ट्रीम करने के लिए तेज़ होता है ताकि सीपीयू एल 3 कैश में किलोबाइट्स पढ़ सके, जैसे हार्ड ड्राइव अपने कैश में एक पूरे ट्रैक को पढ़ते हैं क्योंकि ड्राइव हेड पहले से मौजूद है तो क्यों नहीं?

2

पेपर टेप (~ 1 9 50 का) 5 या 6 छेद (बिट्स) चौड़ा था, शायद अन्य चौड़ाई। पंच किए गए कार्ड (नए प्रकार) 80 कॉलम की 12 पंक्तियां थीं।

1960 के दशक:
बी -5000 - 48-बिट 6 बिट अक्षर
सीडीसी-6600 के साथ "शब्द" - 36-bit शब्दों के साथ - 6 बिट अक्षर
आईबीएम 7090 के साथ 60-बिट शब्द 6-बिट वर्ण
12-बिट मशीनें थीं; आदि

तस्वीर प्राप्त करें?अमेरिकियों ने सोचा कि पात्रों को केवल 6 बिट्स में संग्रहित किया जा सकता है।
फिर हमने पाया कि अंग्रेजी की तुलना में दुनिया में और भी कुछ था।
तो हमने 7-बिट एसीआईआई और 8-बिट ईबीसीडीआईसी के साथ चारों ओर पाया।

आखिरकार हमने फैसला किया कि 8 बिट्स उन सभी पात्रों के लिए पर्याप्त थे जो हमें कभी भी चाहिए। ("हम" चीनी नहीं थे।)

आईबीएम-360 '60 के दशक के 70 के दशक में प्रमुख मशीन के रूप में बाहर आया; यह 8-बिट बाइट पर आधारित था। (इस तरह के 32-बिट शब्द थे, लेकिन यह सभी शक्तिशाली बाइट से कम महत्वपूर्ण हो गया।

8 बिट्स का उपयोग करने के लिए ऐसा अपशिष्ट लग रहा था जब आपको वास्तव में आवश्यक सभी पात्रों को स्टोर करने के लिए 7 बिट्स की आवश्यकता थी

आईबीएम, 20 वीं शताब्दी के मध्य में, "स्वामित्व" कंप्यूटर हार्डवेयर और सॉफ्टवेयर बिक्री के 70% के साथ चिह्नित है। 360 के साथ उनकी मुख्य मशीन, 8-बिट बाइट सभी प्रतिद्वंद्वियों की प्रतिलिपि बनाने की बात थी ।

अंततः हम महसूस किया कि अन्य भाषाओं अस्तित्व में और यूनिकोड/UTF8 और उसके संस्करण के साथ आया था। लेकिन है कि एक और कहानी है।

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