Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C भाषा में संरचना अवधारणा का उपयोग करके बिट फ़ील्ड की व्याख्या


बिट फ़ील्ड का उपयोग वेरिएबल के आकार को बिट्स के संदर्भ में निर्दिष्ट करने के लिए किया जाता है। आमतौर पर, इसे एक संरचना के अंदर परिभाषित किया जाता है।

  • बिट फ़ील्ड: 1 बाइट = 8 बिट्स

उदाहरण के लिए,

नीचे एक उदाहरण समझाया गया है:

Struct info{ 
    int x:2; 
};

यहां, x 2 बिट्स पर कब्जा करता है।

बिट फ़ील्ड को उसकी सीमा से बाहर कोई मान निर्दिष्ट करना अमान्य है।

हम बिट फ़ील्ड के मान को इनपुट करने के लिए scanf स्टेटमेंट का उपयोग नहीं कर सकते क्योंकि, sizeof और एड्रेस ऑपरेटर बिट फ़ील्ड पर लागू नहीं हो सकते।

बिट फ़ील्ड को निर्दिष्ट किए जा सकने वाले डेटा प्रकार int, signed int, unsigned int हो सकते हैं।

प्रोग्राम

निम्नलिखित C प्रोग्राम unsigned int के लिए है:

#include<stdio.h> 
struct info{ 
    unsigned int x:3;// संरचना के अंदर बिट फ़ील्ड को unsigned int निर्दिष्ट करें 
}; 
main(){ 
    struct info i; 
    i.x=8; 
    printf("%d",i.x); 
}

आउटपुट

आउटपुट निम्नानुसार है:

0

व्याख्या

  • unsigned int के लिए रेंज फॉर्मूला 0 से 2^n-1 है और n=बिट्स की संख्या।

  • यहां, n=3, यानी unsigned int 0 से 2^3-1 के बीच है, जो 0 से 7 के बराबर है।

C भाषा में संरचना अवधारणा का उपयोग करके बिट फ़ील्ड की व्याख्या

प्रोग्राम

नीचे दिए गए प्रोग्राम को int के लिए देखें:

#include<stdio.h> 
struct info{ 
    int x:3;// संरचना के अंदर बिट फ़ील्ड को int निर्दिष्ट करें 
}; 
main(){ 
    struct info i; 
    i.x=4; 
    printf("%d",i.x); 
}

आउटपुट

आपको निम्नलिखित आउटपुट प्राप्त होगा:

-4

व्याख्या

  • signed int के लिए रेंज फॉर्मूला = (-2^(n-1)) से 2^(n-1)-1, जहां n बिट्स की संख्या है।
  • प्रोग्राम में, n=3
  • इसे फॉर्मूला में प्रतिस्थापित करें और हमें निम्न परिणाम मिलता है:
=(-2^(3-1)) to 2^(3-1)-1 
=(-2^2) to 2^2-1 
= -4 to 3 i.e., -4,-3,-2,-1,0,1,2,3
  1. C प्रोग्रामिंग भाषा में पॉइंटर्स के ऐरे को समझें C प्रोग्रामिंग भाषा में पॉइंटर्स के ऐरे को समझें

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

  1. C भाषा में यूनियन टू पॉइंटर (Union to Pointer) C भाषा में यूनियन टू पॉइंटर (Union to Pointer)

    यूनियन (Union) क्या है? यूनियन एक यूजर-डिफाइंड डेटा प्रकार है जो एक ही मेमोरी स्थान को विभिन्न डेटा प्रकारों के सदस्यों के लिए साझा करने की अनुमति देता है। किसी भी समय केवल एक सदस्य ही मान रख सकता है। यूनियन की घोषणा union यूनियन_नाम { डेटा_प्रकार सदस्य1; डेटा_प्रकार सदस्य2; // ... };

  1. C भाषा में पॉइंटर एक्सेस करने की अवधारणा C भाषा में पॉइंटर एक्सेस करने की अवधारणा

    पॉइंटर घोषणा, प्रारंभिकरण और एक्सेस 1. सामान्य चर int qty = 179; // मेमोरी में: पता 1000 पर मान 179 संग्रहीत 2. पॉइंटर घोषणा int *p; // p एक पॉइंटर चर है जो int का पता रख सकता है 3. पॉइंटर प्रारंभिकरण int qty = 175; int *p; p = &qty; // एड्रेस-ऑफ ऑपरेटर (&) से पता प्राप्त करें मेमोरी आर