memory एक शब्द और बाइट के बीच क्या अंतर है?




assembly hardware (12)

इस संदर्भ में, एक शब्द वह यूनिट है जो स्मृति के साथ काम करते समय मशीन उपयोग करता है। उदाहरण के लिए, 32 बिट मशीन पर, शब्द 32 बिट लंबा है और 64 बिट पर 64 बिट लंबा है। शब्द का आकार पता स्थान निर्धारित करता है।

प्रोग्रामिंग (सी / सी ++) में, शब्द आमतौर पर int_ptr प्रकार द्वारा दर्शाया जाता है, जिसमें एक सूचक के समान लंबाई होती है, इस तरह इन विवरणों को सारणीबद्ध करते हैं।

कुछ एपीआई आपको भ्रमित कर सकते हैं, जैसे Win32 API, क्योंकि इसमें WORD (16 बिट्स) और DWORD (32 बिट्स) जैसे प्रकार हैं। इसका कारण यह है कि एपीआई शुरू में 16 बिट मशीनों को लक्षित कर रहा था, फिर 32 बिट मशीनों पर पोर्ट किया गया था, फिर 64 बिट मशीनों पर। एक सूचक को स्टोर करने के लिए, आप INT_PTR उपयोग कर सकते हैं। here और here अधिक जानकारी।

मैंने कुछ शोध किया है। एक बाइट 8 बिट्स है और एक शब्द छोटी इकाई है जिसे स्मृति पर संबोधित किया जा सकता है। एक शब्द की सटीक लंबाई बदलती है। मुझे समझ में नहीं आता कि बाइट होने का क्या मतलब है? 8 बिट्स क्यों नहीं कहें?

मैंने इस सवाल का एक प्रोफेसर से पूछा और उन्होंने कहा कि आजकल ज्यादातर मशीनें बाइट-एड्रेसेबल हैं, लेकिन इससे कोई शब्द क्या होगा?


एक शब्द प्रोसेसर में रजिस्टरों का आकार है। इसका मतलब है कि प्रोसेसर निर्देश जैसे, एड, मूल इत्यादि शब्द-आकार के इनपुट पर हैं।

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


यदि कोई मशीन बाइट-एड्रेसेबल है और एक शब्द छोटी इकाई है जिसे स्मृति पर संबोधित किया जा सकता है तो मुझे लगता है कि एक शब्द बाइट होगा!


बाइट : आज, एक बाइट लगभग हमेशा 8 बिट है। हालांकि, यह हमेशा मामला नहीं था और कोई "मानक" या ऐसा कुछ नहीं है जो इसे निर्देशित करता है। चूंकि 8 बिट्स काम करने के लिए एक सुविधाजनक संख्या है, यह वास्तविक तथ्य बन गया है।

शब्द : प्राकृतिक आकार जिसके साथ एक प्रोसेसर डेटा (रजिस्टर आकार) को संभाला जा रहा है। आज का सबसे आम शब्द आकार 8, 16, 32 और 64 बिट्स है, लेकिन अन्य आकार संभव हैं। उदाहरण के लिए, कुछ 36 बिट मशीनें , या यहां तक ​​कि 12 बिट मशीनें भी थीं

बाइट एक सीपीयू के लिए सबसे छोटी पता योग्य इकाई है। यदि आप एकल बिट्स को सेट / साफ़ करना चाहते हैं, तो आपको पहले संबंधित बाइट को मेमोरी, बिट्स के साथ गड़बड़ करने और फिर बाइट को स्मृति में लिखने की आवश्यकता है।

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

ऐसे कुछ प्रोसेसर भी हैं जिनके पास एक अलग सूचक आकार है: उदाहरण के लिए, 8086 एक 16-बिट प्रोसेसर है जिसका अर्थ है कि इसके रजिस्ट्रार 16 बिट चौड़े हैं। लेकिन इसके पॉइंटर्स (पते) 20 बिट चौड़े हैं और इन्हें एक निश्चित तरीके से दो 16 बिट रजिस्टरों के संयोजन द्वारा गणना की गई थी।


ऐसा लगता है कि सभी उत्तरों उच्च स्तर की भाषाओं और मुख्य रूप से सी / सी ++ मानते हैं।

लेकिन सवाल "असेंबली" टैग किया गया है और सभी असेंबलरों में मुझे पता है (8 बिट, 16 बिट, 32 बिट और 64 बिट सीपीयू के लिए), परिभाषाएं और अधिक स्पष्ट हैं:

byte  = 8 bits 
word  = 2 bytes
dword = 4 bytes = 2Words (dword means "double word")
qword = 8 bytes = 2Dwords = 4Words ("quadruple word")

बीईटीई और शब्द की शर्तें प्रोसेसर के आकार के सापेक्ष हैं जिन्हें संदर्भित किया जा रहा है। सबसे आम प्रोसेसर 8 बिट, 16 बिट, 32 बिट या 64 बिट थे। प्रोसेसर की वर्ड लम्बाई ये हैं। असल में वर्ड का आधा बीईटीई है, जो भी संख्यात्मक लंबाई है। इसके लिए तैयार, बीईटीई का आधा एक निबिल है।


इसके बारे में सोचने का भी अच्छा तरीका है। बेशक यह कंप्यूटर वास्तुकला पर निर्भर करता है।

bit = …1 bit…
nybble = 4 bits = 1/2 byte
byte = 8 bits = 2 nybbles
WORD = 2 bytes = 4 nybbles = 16 bits
DWORD = 2 WORDs = 4 bytes = 8 nybbles = 32 bits
QWORD = 2 DWORDs = 4 WORDs = ... = 64 bits

बाइट

मैं इस प्रश्न का उत्तर सी ++ परिप्रेक्ष्य से करने का प्रयास कर रहा हूं।

सी ++ मानक 'बाइट' को "निष्पादन वातावरण के मूल चरित्र सेट के किसी भी सदस्य को पकड़ने के लिए पर्याप्त डेटा की पता योग्य इकाई" के रूप में परिभाषित करता है।

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

दूसरे शब्दों में, एक बाइट एक वर्ण को स्टोर करने के लिए आवश्यक स्मृति की मात्रा है।

यदि आप अपने सी ++ कार्यान्वयन में 'बिट्स की संख्या' को सत्यापित करना चाहते हैं, तो फ़ाइल 'limit.h' जांचें। इसमें नीचे की तरह एक प्रविष्टि होनी चाहिए।

#define CHAR_BIT      8         /* number of bits in a char */

शब्द

एक शब्द को बिट्स की विशिष्ट संख्या के रूप में परिभाषित किया जाता है जिसे मशीन / सिस्टम द्वारा एक साथ संसाधित किया जा सकता है (यानी एक प्रयास में)। वैकल्पिक रूप से, हम कह सकते हैं कि शब्द डेटा की मात्रा को परिभाषित करता है जिसे एक ही ऑपरेशन में सीपीयू और रैम के बीच स्थानांतरित किया जा सकता है।

कंप्यूटर मशीन में हार्डवेयर रजिस्ट्रार शब्द का आकार होता है। शब्द का आकार सबसे बड़ा संभव स्मृति पता भी परिभाषित करता है (प्रत्येक स्मृति पता बिंदु बाइट आकार की स्मृति को इंगित करता है)।

नोट - सी ++ प्रोग्राम में, मेमोरी पतों मेमोरी के बाइट को इंगित करता है, न कि किसी शब्द के लिए।


असल में, सामान्य उपयोग में, शब्द 16 बिट्स के समानार्थी बन गया है, जैसे बाइट 8 बिट्स के साथ है। 32-बिट सीपीयू पर "शब्द आकार" के बाद से थोड़ा उलझन में आ सकता है, लेकिन डेटा के एक शब्द के बारे में बात करते समय, एक का मतलब 16-बिट होगा। 32-बिट शब्द आकार वाले माइक्रोकंट्रोलर ने अपने निर्देश "लम्बे" (माना जाता है कि शब्द / डबलवर्ड भ्रम से बचने और उससे बचने के लिए) को बुलाया है।


8 बिट्स क्यों नहीं कहें?

क्योंकि सभी मशीनों में 8-बिट बाइट नहीं होते हैं। चूंकि आपने इस C टैग किया C , CHAR_BIT में limits.h


मुझे समझ में नहीं आता कि बाइट होने का क्या मतलब है? 8 बिट्स क्यों नहीं कहें?

तकनीकी बिंदु के अलावा कि एक बाइट आवश्यक नहीं है 8 बिट्स, शब्द रखने के कारण सरल मानव प्रकृति है:

  • प्रयास की अर्थव्यवस्था (उर्फ आलस्य) - "आठ बिट्स" के बजाय "बाइट" कहना आसान है

  • आदिवासीवाद - लोगों के समूह दूसरों से अलग करने के लिए शब्दजाल / एक निजी भाषा का उपयोग करना पसंद करते हैं।

सिर्फ प्रवाह के साथ जाओ। आप इस बारे में शिकायत करके संचित आईटी शब्दावली और सांस्कृतिक सामान के 50+ वर्ष बदलने वाले नहीं हैं।

एफडब्ल्यूआईडब्ल्यू - जब आप "हार्डवेयर आर्किटेक्चर से स्वतंत्र 8 बिट" का मतलब है तो "टर्म" आर्किटेक्ट का उपयोग करने के लिए सही शब्द है।


डेटाशीट्स और कंपाइलर्स में जो भी शब्दावली मौजूद है, एक 'बाइट' आठ बिट्स है। चलो अधिक अस्पष्ट अपवादों के साथ पूछताछ करने वाले और सामान्यताओं को भ्रमित करने की कोशिश न करें, विशेष रूप से 'बाइट' शब्द "आठ से" अभिव्यक्ति से आता है। मैंने अर्धचालक / इलेक्ट्रॉनिक्स उद्योग में तीस साल से अधिक समय तक काम किया है और एक बार 'बाइट' को आठ बिट्स से अधिक कुछ भी व्यक्त करने के लिए उपयोग नहीं किया जाता है।





hardware