c++ "बिट" के बारे में जानने के लिए कहां?




architecture bit-manipulation (8)

मैं कुछ पुस्तकों या संसाधनों को विस्तार से कुछ के बारे में बात करने की कोशिश कर रहा हूं ताकि उदाहरण के लिए मैं एक संख्या (जैसे 16) बिट्स में अनुवाद कर सकूं। मैं वर्तमान में एक उच्च विद्यालय के छात्र हूँ और जब भी प्रोग्रामिंग किताबें पढ़ता हूं, मैं बिट / बीटीवाइ ऑपरेटर्स भाग को छोड़कर लगभग सब कुछ समझ सकता हूँ। मुझे नहीं पता कि यह कैसे काम करता है और लोगों को थोड़ा और बाइट क्यों आती है :( इसलिए, मुझे आशा है कि आप लोग मुझे कुछ संसाधन सुझाव दे सकते हैं कि कैसे संख्या / वर्णों को बिट्स में अनुवाद किया जाए।

मेरे प्रश्न का उत्तर देने के लिए धन्यवाद और एक महान दिन है!


अपने प्रश्न के हिस्से का जवाब देने के लिए ...

बस Google खोज बॉक्स में 16 to binary टाइप करें यदि आप वास्तव में बहादुर महसूस कर रहे हैं, तो आप हेक्साडेसिमल में अपना उत्तर प्राप्त करने के 16 to hex को 16 to hex टाइप कर सकते हैं। :)


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


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


Googling 'द्विआधारी अंकगणितीय' की कोशिश करो। आपको शुरू करने के लिए यहां एक बहुत अच्छा लेख है


मैं एक z80, PIC या अन्य माइक्रोप्रोसेसर प्रोग्राम सीखना सीखूंगा। तब आप समझेंगे कि बिट्स और बाइट्स कहाँ से आते हैं। इससे पहले कि आप ऐसा करते हैं, शायद आप डिजिटल इलेक्ट्रॉनिक्स के साथ गंदे होना चाहते हैं कारण बिट्स मौजूद है क्योंकि डिजिटल इलेक्ट्रॉनिक्स में केवल 2 मूल्यों के साथ संकेत होते हैं, अर्थात् चालू और बंद, इसलिए 1 और 0 या थोड़े।


काफी एक पुस्तक नहीं है, लेकिन संख्याओं के द्विआधारी प्रतिनिधित्व पर विकिपीडिया लेख अत्यधिक विस्तार में चला जाता है। और ऐसे ठिकानों के बीच परिवर्तित करने पर एक अच्छा अनुभाग है जो आपको उपयोगी पा सकते हैं।

बिटफ़ील्ड और संख्याओं के द्विआधारी प्रतिनिधित्व के साथ काम करने के लिए कुछ डरावनी चालाक चालें हैं ; stb.h शीर्ष लेख से :

int stb_bitcount(unsigned int a)
{
   a = (a & 0x55555555) + ((a >>  1) & 0x55555555); // max 2
   a = (a & 0x33333333) + ((a >>  2) & 0x33333333); // max 4
   a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits
   a = (a + (a >> 8)); // max 16 per 8 bits
   a = (a + (a >> 16)); // max 32 per 8 bits
   return a & 0xff;
}

unsigned int stb_bitreverse8(unsigned char n)
{
   n = ((n & 0xAA) >> 1) + ((n & 0x55) << 1);
   n = ((n & 0xCC) >> 2) + ((n & 0x33) << 2);
   return (unsigned char) ((n >> 4) + (n << 4));
}

unsigned int stb_bitreverse(unsigned int n)
{
  n = ((n & 0xAAAAAAAA) >>  1) | ((n & 0x55555555) << 1);
  n = ((n & 0xCCCCCCCC) >>  2) | ((n & 0x33333333) << 2);
  n = ((n & 0xF0F0F0F0) >>  4) | ((n & 0x0F0F0F0F) << 4);
  n = ((n & 0xFF00FF00) >>  8) | ((n & 0x00FF00FF) << 8);
  return (n >> 16) | (n << 16);
}

एकदम कमाल का। :)


कंप्यूटर की दुनिया में सब कुछ केवल '0' और '1' स्ट्रिंग द्वारा प्रतिनिधित्व किया जा सकता है। उदाहरण, एक इंट टाइप सामान्य में 32 बिट्स हैं, लंबे लम्बे प्रकार के 64 बिट्स हैं, एन-बिट्स टाइप 0 से 2 ^ एन -1 के नंबर का प्रतिनिधित्व कर सकते हैं

इसके अतिरिक्त, बिट ऑपरेशन जैसे '<<', '>>', '&', या '|' कंप्यूटर में अंकगणित संचालन की तुलना में तेज़ हैं, क्योंकि ऐसा करने के लिए हार्डवेयर का उपयोग किया जाता है। और इसके अनुसार कई कोड अनुकूलित किए जा सकते हैं।

द्विआधारी को एक पूर्णांक परिवर्तित करें, सबसे पहले आपको पता होना चाहिए कि 2 ^ 0,2 ^ 1,2 ^ 2 के संयोजन से किसी भी संख्या का प्रतिनिधित्व किया जा सकता है। 2 ^ के: जैसे 6 = 2 ^ 2 + 2 ^ 1 , 13 = 2 ^ 3 + 2 ^ 2 + 2 ^ 0 और इसी प्रकार, फिर 6 और 13 को 0110 और 1101 लिख सकते हैं। वास्तव में, यह एक गणित समस्या है।

यदि आप बिट ऑपरेशन के बारे में अधिक जानना चाहते हैं, तो मुझे लगता है कि आप यहां पर बजाय Google या विकी पर खोज सकते हैं।


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

बीटीडब्ल्यू: आमतौर पर एक्स 86 के लिए वायरस के बारे में किताबें ये समझने की शुरुआत करती हैं कि सीपीयू किस तरह काम करता है, लेकिन बेस -2 और बेस -16 सिस्टम को समझने के बिना आपको उनसे ज्यादा नहीं मिलेगा।







bit