मैंने इस असेंबली प्रोग्रामिंग ट्यूटोरियल में पढ़ा कि 8 बिट्स डेटा के लिए उपयोग किए जाते हैं जबकि 1 बिट समता के लिए है, जो तब समता त्रुटि (हार्डवेयर दोष या विद्युत गड़बड़ी के कारण) का पता लगाने के लिए उपयोग किया जाता है।
क्या ये सच है?
मैंने इस असेंबली प्रोग्रामिंग ट्यूटोरियल में पढ़ा कि 8 बिट्स डेटा के लिए उपयोग किए जाते हैं जबकि 1 बिट समता के लिए है, जो तब समता त्रुटि (हार्डवेयर दोष या विद्युत गड़बड़ी के कारण) का पता लगाने के लिए उपयोग किया जाता है।
क्या ये सच है?
जवाबों:
डेटा का एक बाइट आठ बिट्स होता है, डेटा के प्रति बाइट में अधिक बिट्स हो सकते हैं जो ओएस या यहां तक कि हार्डवेयर स्तर पर त्रुटि की जाँच के लिए उपयोग किए जाते हैं (समता बिट, या एक और अधिक उन्नत त्रुटि का पता लगाने की योजना), लेकिन डेटा आठ है बिट्स और किसी भी समता बिट आमतौर पर सॉफ्टवेयर के लिए अदृश्य है। एक बाइट को 'आठ बिट डेटा' के लिए मानकीकृत किया गया है। पाठ यह कहने में गलत नहीं है कि डेटा के आठ बिट्स की तुलना में डेटा के बाइट को संग्रहीत करने के लिए और अधिक बिट्स हो सकते हैं, लेकिन जिन्हें आमतौर पर प्रति बाइट का हिस्सा नहीं माना जाता है, पाठ स्वयं इस तथ्य को इंगित करता है।
आप इसे ट्यूटोरियल के निम्नलिखित भाग में देख सकते हैं:
Doubleword: a 4-byte (32 bit) data item
4 * 8 = 32, यह वास्तव में सिस्टम पर 36 बिट्स ले सकता है लेकिन आपके इरादों और उद्देश्यों के लिए यह केवल 32 बिट्स है।
char
सी में (जो लिंक के बारे में है) मेमोरी की सबसे छोटी पता योग्य इकाई है। इसे सिर्फ चार कहा जाता है , लेकिन सी स्टैंडर्ड इसे बाइट का पर्याय बनाता है ।
परंपरागत रूप से, एक बाइट किसी भी आकार की हो सकती है, और स्मृति की सबसे छोटी पता योग्य इकाई है। इन दिनों, 8 बिट बाइट्स को सॉफ्टवेयर के लिए बहुत अधिक मानकीकृत किया गया है। जैसा कि JustAnotherSoul ने कहा, हार्डवेयर 8 बिट्स डेटा की तुलना में अधिक बिट्स संग्रहीत कर सकता है।
यदि आप FPGAs की तरह प्रोग्राम करने योग्य लॉजिक डिवाइस पर काम कर रहे हैं, तो आप देख सकते हैं कि उनकी आंतरिक मेमोरी अक्सर 9-बिट चंक्स के रूप में पता करने योग्य होती है, और HDL लेखक के रूप में, आप त्रुटि जाँच के लिए या बड़ी मात्रा में स्टोर करने के लिए उस 9 बिट का उपयोग कर सकते हैं प्रति "बाइट" का डेटा कस्टम हार्डवेयर के लिए मेमोरी चिप्स खरीदते समय, आपके पास आम तौर पर 8 या 9 बिट एड्रेसेबल यूनिट (या 16/18, 32/36, आदि) का विकल्प होता है, और फिर यह आप पर निर्भर करता है कि आपके पास 9 बिट "बाइट" हैं और क्या यदि आप इसे चुनना चाहते हैं तो आप उस 9 बिट के साथ करते हैं।
वह पाठ बेहद घटिया शब्द है। वह लगभग निश्चित रूप से ईसीसी (त्रुटि-सुधार कोड) रैम के बारे में बात कर रहा है ।
ECC रैम आमतौर पर 9-बिट्स का उपयोग करके 8-बिट्स की जानकारी संग्रहीत करता है। अतिरिक्त बिट-प्रति-बाइट का उपयोग त्रुटि सुधार कोड को संग्रहीत करने के लिए किया जाता है।
(दोनों मामलों में, प्रत्येक बाइट हर चिप में फैली हुई है। पगेट सिस्टम की छवि शिष्टाचार )
यह सभी हार्डवेयर के उपयोगकर्ताओं के लिए पूरी तरह से अदृश्य है। दोनों ही मामलों में, इस रैम का उपयोग करने वाला सॉफ्टवेयर 8 बिट प्रति बाइट देखता है।
एक तरफ के रूप में: रैम में त्रुटि-सुधार कोड आमतौर पर प्रति बाइट 1 बिट नहीं होते हैं; वे 8 बाइट्स प्रति 8 बाइट्स के बजाय हैं। इसमें एक ही स्थान ओवरहेड है, लेकिन इसके कुछ अतिरिक्त फायदे हैं। अधिक जानकारी के लिए SECDED देखें ।
आम तौर पर, संक्षिप्त जवाब यह है कि एक बाइट 8 बिट्स है। यह मामले की निगरानी करता है (कभी-कभी अशुद्धि के बिंदु तक भी), लेकिन क्या परिभाषा अधिकांश लोगों (प्रोग्रामर की एक बड़ी संख्या सहित) से परिचित हैं, और परिभाषा लगभग सभी को चूकती है (चाहे वे कितने अलग-अलग आकार के बाइट्स हों) ve के साथ काम करना पड़ा)।
विशेष रूप से, एक बाइट दी गई वास्तुकला के लिए सबसे छोटी पता योग्य स्मृति इकाई है, और आमतौर पर एक ही पाठ चरित्र को धारण करने के लिए पर्याप्त बड़ी है। अधिकांश आधुनिक आर्किटेक्चर पर, एक बाइट को 8 बिट्स के रूप में परिभाषित किया गया है; ISO / IEC 80000-13 यह भी निर्दिष्ट करता है कि एक बाइट 8 बिट्स है, जैसा कि लोकप्रिय आम सहमति है (जिसका अर्थ है कि अगर आप 9 बिट के बाइट्स के बारे में बात कर रहे हैं, तो आप बहुत परेशानी में पड़ने वाले हैं, जब तक कि आप स्पष्ट रूप से नहीं। यह बताएं कि आपके पास सामान्य बाइट्स नहीं हैं)।
हालाँकि, इस नियम के अपवाद हैं। उदाहरण के लिए:
sizeof(char)
, जबकि यह भी अप्रत्यक्ष रूप से बताते हुए कि char
न्यूनतम 8 बिट होना चाहिए, प्रत्येक बाइट में एक यूनिक एड्रेस होना चाहिए, और अपच बाइट्स के बीच कोई स्पेस नहीं होना चाहिए। याद में। यह भाषाओं को अधिक पोर्टेबल बनाने के लिए है अगर वे स्पष्ट रूप से 8-बिट बाइट्स की आवश्यकता होती है। [एक बाइट में बिट्स की संख्या निर्दिष्ट की जाती है CHAR_BIT
, जैसे सी लाइब्रेरी हेडर "लिमिट्स" ( limits.h
सी में, climits
सी ++ में)।]
तो, ज्यादातर मामलों में, एक बाइट आमतौर पर 8 बिट्स होगी। यदि नहीं, तो यह संभवतः 9 बिट्स है, और 36-बिट शब्द का हिस्सा हो भी सकता है और नहीं भी।
ध्यान दें कि शब्द बाइट शब्द को संदर्भ के बिना अच्छी तरह से परिभाषित नहीं किया गया है। जहां तक कंप्यूटर आर्किटेक्चर का संबंध है, आप मान सकते हैं कि एक बाइट 8-बिट है, कम से कम आधुनिक आर्किटेक्चर के लिए। यह काफी हद तक C जैसे प्रोग्रामिंग लैंग्वेज द्वारा मानकीकृत था, जिसमें कम से कम 8 बिट्स के लिए बाइट्स की आवश्यकता होती थी, लेकिन बड़ी बाइट्स के लिए कोई गारंटी नहीं देता था, केवल सुरक्षित धारणा को प्रति बाइट 8 बिट बनाता था।
8 बिट (आमतौर पर 16 या 32) से बड़े पते वाली इकाइयों के साथ कंप्यूटर होते हैं, लेकिन उन इकाइयों को आमतौर पर मशीन शब्द कहा जाता है, बाइट्स नहीं। उदाहरण के लिए, 32K 32-बिट रैम शब्दों के साथ एक डीएसपी को 128 केबी या रैम के रूप में विज्ञापित किया जाएगा, 32 केबी नहीं।
संचार मानकों की बात आती है तो चीजें इतनी अच्छी तरह से परिभाषित नहीं होती हैं। ASCII अभी भी व्यापक रूप से उपयोग किया जाता है, और इसमें 7-बिट बाइट्स हैं (जो कंप्यूटर पर 8-बिट बाइट्स में अच्छी तरह से फिट हैं)। UART के ट्रांस्फ़ॉर्मर्स अभी भी कॉन्फ़िगर करने योग्य बाइट के आकार के हैं (आमतौर पर, आपको कम से कम 6, 7 और 8 बिट प्रति बाइट लेने के लिए मिलता है, लेकिन 5 और 9 अनसुना नहीं हैं)।
एक बाइट को आमतौर पर मेमोरी स्पेस की सबसे छोटी व्यक्तिगत रूप से संबोधित करने योग्य इकाई के रूप में परिभाषित किया जाता है। यह किसी भी आकार हो सकता है। 6 और 9 बिट्स के बीच कहीं भी बाइट साइज़ वाले आर्किटेक्चर रहे हैं, शायद और भी बड़े। ऐसे आर्किटेक्चर भी हैं जहां एकमात्र पता इकाई बस का आकार है, ऐसे आर्किटेक्चर पर हम या तो कह सकते हैं कि उनके पास बस कोई बाइट नहीं है , या बाइट शब्द के समान आकार है (एक विशेष मामले में मुझे पता है कि) 32 बिट हो); किसी भी तरह से, यह निश्चित रूप से 8 बिट नहीं है। इसी तरह, बिट-एड्रेस करने योग्य आर्किटेक्चर हैं, उन आर्किटेक्चर पर, हम फिर से तर्क दे सकते हैं कि बाइट्स बस मौजूद नहीं हैं, या हम तर्क दे सकते हैं कि बाइट्स 1 बिट हैं; किसी भी तरह से एक समझदार परिभाषा है, लेकिन 8 बिट निश्चित रूप से गलत है।
कई मुख्यधारा के सामान्य उद्देश्य आर्किटेक्चर पर, एक बाइट में 8 बिट होते हैं। हालाँकि, यह गारंटी नहीं है। आगे आप मुख्यधारा से और / या सामान्य प्रयोजन सीपीयू से भटक जाएंगे, और अधिक संभावना है कि आप गैर-8-बिट-बाइट्स का सामना करेंगे। यह इतना आगे जाता है कि कुछ अत्यधिक-पोर्टेबल सॉफ़्टवेयर आकार को भी विन्यास योग्य बनाते हैं। जीसीसी के पुराने संस्करणों में एक मैक्रो BITS_PER_BYTE
(या ऐसा कुछ) नामक एक मैक्रो होता था , जो एक विशेष वास्तुकला के लिए बाइट के आकार को कॉन्फ़िगर करता था। मेरा मानना है कि NetBSD के कुछ पुराने संस्करणों को गैर-8-बिट-प्रति-बाइट आर्किटेक्चर पर चलाने के लिए बनाया जा सकता है।
यदि आप वास्तव में इस बात पर ज़ोर देना चाहते हैं कि आप स्मृति की सबसे छोटी पता योग्य राशि के बजाय 8 बिट की एक सटीक राशि के बारे में बात कर रहे हैं, हालाँकि जो बड़ी हो सकती है, आप ऑक्टेट शब्द का उपयोग कर सकते हैं , जो कि उदाहरण के लिए कई नए RfCs में उपयोग किया जाता है।
CHAR_BIT
(पाया गया limits.h
) है, मुझे इस बारे में पता नहीं हैBITS_PER_BYTE
जब मैंने 1960 में प्रोग्रामिंग शुरू की थी, तो हमारे पास 6 बिट बाइट्स के साथ 48 बिट शब्द थे - वे उस नाम को नहीं कहते थे, तब उन्हें वर्ण कहा जाता था। फिर मैंने 75 बिट शब्दों और 15 बिट बाइट्स के साथ गोलेम कंप्यूटर पर काम किया। बाद में, 6 बिट बाइट्स आदर्श थे, जब तक कि आईबीएम 360 के साथ बाहर नहीं आया था, और आजकल एक बाइट आमतौर पर एक ऑक्टेट के बराबर है, यानी 8 बिट डेटा। कुछ हार्डवेयर में त्रुटि का पता लगाने के लिए और संभवतः त्रुटि सुधार के लिए अतिरिक्त बिट्स थे, लेकिन ये सॉफ़्टवेयर द्वारा सुलभ नहीं थे।
एक बाइट 8 बिट है।
सुदूर अतीत में, स्मृति शब्द और बाइट की अलग-अलग परिभाषाएँ थीं। यह सुझाव कि यह अस्पष्टता व्यापक है या आज के जीवन में प्रचलित है झूठी है।
1970 के अंत में कम से कम, एक बाइट 8 बिट्स की रही है। होम कंप्यूटर और पीसी के बड़े पैमाने पर सभी आबादी ने अपने दस्तावेज में 8-बिट मान के रूप में एक बाइट का उपयोग किया है, क्योंकि फ्लॉपी डिस्क ड्राइव, हार्ड डिस्क ड्राइव और PROM / EPP / EEPROM / फ्लैश EPROM के लिए सभी डेटा शीट और प्रलेखन है / एसआरएएम / एसडीआरएएम मेमोरी चिप्स जो मैंने उस समय अवधि में पढ़ा है। (और मैंने व्यक्तिगत रूप से उस समय की अवधि में उनमें से एक बहुत कुछ पढ़ा है।) ईथरनेट और अन्य संचार प्रोटोकॉल के एक जोड़े ने मुझे ओकटेट्स के बारे में बात करने में असामान्य रूप से बताया।
बाइट शब्द की अस्पष्टता अपने आप में एक दुर्लभ और अस्पष्ट बात है। पिछले 30 वर्षों में प्रोग्रामर, डिज़ाइन इंजीनियर, टेस्ट इंजीनियर, सेल्सपर्स, सर्विस इंजीनियर या औसत पंटर्स की आबादी में से बहुत कम लोगों को लगता है कि इसका मतलब 8-बिट वैल्यू के अलावा कुछ और होगा, अगर वे इस शब्द को पहचानते हैं। ।
जब एक बाइट को हार्डवेयर द्वारा नियंत्रित किया जाता है, जैसे जब मेमोरी चिप्स में संग्रहीत या तार के साथ संचार किया जाता है, तो हार्डवेयर बाइट में अनावश्यक डेटा जोड़ सकता है। यह बाद में हार्डवेयर त्रुटियों का पता लगाने में सहायता कर सकता है ताकि अविश्वसनीय डेटा को पहचाना और खारिज किया जा सके (जैसे समता, चेकसम, सीआरसी)। या यह डेटा में त्रुटियों को ठीक करने की अनुमति दे सकता है और पुनर्प्राप्त डेटा (जैसे ईसीसी)। किसी भी तरह से, अनावश्यक डेटा को हटा दिया जाएगा जब बाइट को पुनः प्राप्त किया गया है या आगे की प्रक्रिया के लिए प्राप्त किया गया है। बाइट केंद्रीय 8-बिट मान और निरर्थक डेटा अनावश्यक डेटा रहता है।
सबसे पहले, जिस ट्यूटोरियल को आप संदर्भित कर रहे हैं, वह काफी पुराना लग रहा है, और लगता है कि इसे x86 प्रोसेसर के पुराने संस्करणों में निर्देशित किया जा रहा है, बिना यह बताते हुए कि आपके द्वारा पढ़ी गई बहुत सारी चीजें दूसरों द्वारा समझ में नहीं आएंगी (उदाहरण के लिए यदि आप दावा करते हैं कि एक WORD 2 बाइट्स है, लोग या तो यह नहीं जान पाएंगे कि आप किस बारे में बात कर रहे हैं, या उन्हें पता चलेगा कि आपको बहुत पुराने x86 प्रोसेसर के आधार पर पढ़ाया गया है और यह पता चलेगा कि क्या उम्मीद है)।
एक बाइट किसी भी बिट्स की संख्या है जो किसी ने फैसला किया है कि यह होना चाहिए। यह 8 बिट या 9 बिट या 16 बिट, कुछ भी हो सकता है। 2016 में, ज्यादातर मामलों में एक बाइट आठ बिट होगी। सुरक्षित होने के लिए आप ऑक्टेट शब्द का उपयोग कर सकते हैं - एक ऑक्टेट हमेशा, हमेशा, आठ बिट्स होता है।
यहाँ वास्तविक भ्रम दो प्रश्नों को भ्रमित कर रहा है: 1. एक बाइट में बिट्स की संख्या कितनी होती है? 2. यदि मैं एक बाइट को एक स्थान से दूसरे स्थान पर स्थानांतरित करना चाहता था, या यदि मैं व्यावहारिक भौतिक साधनों का उपयोग करते हुए बाइट स्टोर करना चाहता था, तो मैं यह कैसे करूँगा? जब तक आप मॉडेम, या हार्ड ड्राइव, या SSD ड्राइव बनाने वाली कंपनी में काम करते हैं, तब तक दूसरा सवाल आपके लिए आम तौर पर कम रुचि वाला होता है। व्यवहार में आप पहले सवाल में रुचि रखते हैं, और दूसरे के लिए आप बस "अच्छी तरह से कहते हैं, किसी को उसके बाद दिखता है"।
जिस समानता बिट का उल्लेख किया गया था वह एक आदिम तंत्र है जो यह पता लगाने में मदद करता है कि जब बाइट को मेमोरी में संग्रहीत किया जाता है, और बाद में बाइट को पढ़ा जाता है, तो स्मृति किसी दुर्घटना से बदल गई है। यह उस पर बहुत अच्छा नहीं है, क्योंकि यह नहीं पाएगा कि दो बिट्स को बदल दिया गया है इसलिए एक बदलाव की संभावना नहीं है, और यह समस्या से उबर नहीं सकता है क्योंकि यह पता लगाने का कोई तरीका नहीं है कि 8 बिट्स में से कौन सा बदल गया है , या भले ही समता बिट बदल गया हो।
समता बिट्स व्यावहारिक रूप से उस आदिम रूप में उपयोग नहीं किए जाते हैं। स्थायी रूप से संग्रहीत डेटा को आमतौर पर अधिक जटिल तरीकों से संरक्षित किया जाता है, उदाहरण के लिए 1024 बाइट्स के ब्लॉक में 32 बिट या अधिक समय तक चेकसम को जोड़कर - जो बहुत कम अतिरिक्त स्थान लेता है (12.5% के बजाय इस उदाहरण में 0.4%) और बहुत अधिक है कुछ गलत होने पर पता नहीं लगने की संभावना कम है।
WORD
, जो ... थोरा आपकी बात साबित करता है, क्योंकि बहुत सारे WinAPI प्रकार के नाम पुराने हैं, लेकिन पश्च-संगतता के लिए रखे गए हैं। xP
आधुनिक उपयोग में, एक बाइट 8 बिट है, अवधि (हालांकि इसकी ऐतिहासिक रूप से अन्य परिभाषाएं हैं)। दूसरी ओर, एक डेटा शब्द जो कुछ भी होता है वह एक परमाणु इकाई के रूप में संभालता है हार्डवेयर - 8 बिट्स, 9 बिट्स, 10 बिट्स, 12 बिट्स, 16 बिट्स, 20 बिट्स, 24 बिट्स, 32 बिट्स, आदि हो सकता है। विभिन्न कंप्यूटर वर्षों में सिस्टम में विभिन्न प्रकार के शब्द आकार होते हैं।
मेमोरी सिस्टम या ट्रांसमिशन प्रोटोकॉल को लागू करने के लिए, त्रुटि का पता लगाने / सुधार को जोड़ना फायदेमंद है जिसमें अतिरिक्त बिट्स शामिल हैं। वे 9-बिट बाइट के लिए नहीं बनाते हैं, क्योंकि जैसा कि ऊपर कहा गया है, एक बाइट 8 बिट है।
विभिन्न योजनाएं विभिन्न तरीकों से त्रुटि का पता लगाने और / या सुधार को जोड़ती हैं।
समता का विशिष्ट उपयोग ट्रांसमिशन शब्द में एक अतिरिक्त बिट जोड़ने के लिए है ताकि रिसीवर एकल त्रुटि का पता लगा सके।
एक योजना जो एकल-बिट त्रुटि सुधार प्रदान कर सकती है, उसमें 32 बिट डेटा शब्द के साथ 4 ईसीसी बिट्स शामिल है। यह सिर्फ 1 बिट प्रति बाइट के बराबर अंकगणित होता है, लेकिन यह उस तरह से काम नहीं कर सकता / करती है। एक 36-बिट डेटा शब्द 32-बिट डेटा स्थान के लिए एकल बिट त्रुटि से पुनर्प्राप्त करने के लिए पर्याप्त जानकारी ले सकता है।
8 बिट्स। सीपीयू और कीबोर्ड के अंदर, यह 9 और 11 बिट है। उपयोगकर्ता डेटा 8 बिट्स में दर्शाया गया है। कीबोर्ड पर कीज़ गाते हैं जो 11 बिट्स में विभाजित होते हैं। 1 शुरुआती बिट, 1 एंडिंग बिट, 1 पैरिटी बिट और 8 बिट्स एक कुंजी दबाए हुए का प्रतिनिधित्व करते हैं।