दिलचस्प पोस्ट
शेल में एक स्ट्रिंग को विभाजित कैसे करें और आखिरी फ़ील्ड प्राप्त करें मूल क्रम को एल्गोरिदम का उपयोग करते समय अनुक्रमित std :: vector से डुप्लिकेट को कैसे निकालना है? यूटीएफ -8 सभी तरह से माध्यम से मैं ScheduledThreadPoolExecutor, टाइमरटैक्स, या हैंडलर कहां बना सकता हूं? त्रुटि आयात tensorflow मॉड्यूल के दौरान सी #% AppData% के पथ को प्राप्त करना ओपनग्लैंड में विजुअल सी ++ का उपयोग करके एक 3D क्षेत्र बनाना Android एप्लिकेशन आईडी कैसे प्राप्त करें? स्विफ्ट बीटा 6 – भ्रमित लिंकर त्रुटि संदेश कैसे श्रेणी के सभी JUnit परीक्षण चलाने के लिए / चींटी के साथ सूट? क्या एक SASS.js है? कुछ कम like.js? हसोक के लिए हांजोड तैनाती, स्थैतिक रूप से निर्माण नहीं किया जा सकता पहचान द्वारा किसी वस्तु को संदर्भित करने का मानक तरीका (के लिए, उदाहरण के लिए, परिपत्र संदर्भ)? जीपीआरएफ के विकल्प क्या स्विफ्ट प्रोग्राम में ऑटोोरियलेपूल का उपयोग करना आवश्यक है?

स्ट्रक्चर घोषणा में बृहदान्त्र का क्या अर्थ है, जैसे: 1,: 7,: 16, या: 32?

निम्नलिखित C ++ कोड का क्या अर्थ है?

unsigned char a : 1; unsigned char b : 7; 

मुझे लगता है कि यह दो ए और बी बनाता है, और उन दोनों को एक बाइट लंबा होना चाहिए, लेकिन मुझे नहीं पता है कि ": 1" और ": 7" भाग क्या है

Solutions Collecting From Web of "स्ट्रक्चर घोषणा में बृहदान्त्र का क्या अर्थ है, जैसे: 1,: 7,: 16, या: 32?"

1 और 7 मूल्यों की सीमा को सीमित करने के लिए बिट आकार हैं वे आमतौर पर संरचनाओं और यूनियनों में पाए जाते हैं। उदाहरण के लिए, कुछ सिस्टम पर ( char चौड़ाई और पैकिंग नियम आदि पर निर्भर करता है), कोड:

 typedef struct { unsigned char a : 1; unsigned char b : 7; } tOneAndSevenBits; 

b लिए 8-बिट मान, एक बिट और 7 बिट बनाता है।

आम तौर पर "संपीड़ित" मानों जैसे 4-बिट न्यब्बल तक पहुंचने के लिए सी में उपयोग किया जाता है जो 8-बिट के शीर्ष आधा भाग में शामिल हो सकता है:

 typedef struct { unsigned char leftFour : 4; unsigned char rightFour : 4; } tTwoNybbles; 

हमारे बीच भाषा वकीलों के लिए, सी +11 11 मानक का 9.6 खंड इस विस्तार से, थोड़े समझाता है:


बिट-फ़ील्ड [class.bit]

फॉर्म के एक सदस्य घोषणापत्र

पहचानकर्ता ऑप्ट -स्पेसिफ़र चुनते हैं : निरंतर-अभिव्यक्ति

बिट-फ़ील्ड निर्दिष्ट करता है; इसकी लंबाई एक कॉलन द्वारा बिट-फील्ड नाम से सेट की गई है एक्टिविटी -स्पेसिफायर एपर्ट्स को इकाई घोषित किया जा रहा है बिट फ़ील्ड विशेषता क्लास सदस्य के प्रकार का हिस्सा नहीं है।

निरंतर अभिव्यक्ति एक अभिन्न निरंतर अभिव्यक्ति होगी जो शून्य से अधिक या उसके बराबर है। अभिन्न निरंतर अभिव्यक्ति का मान बिट-फ़ील्ड प्रकार के ऑब्जेक्ट के प्रतिनिधित्व में बिट्स की संख्या से बड़ा हो सकता है; ऐसे मामलों में अतिरिक्त बिट्स को पैडिंग बिट्स के रूप में उपयोग किया जाता है और बिट-फील्ड के मूल्य प्रतिनिधित्व में भाग नहीं लेते हैं

कक्षा ऑब्जेक्ट के भीतर बिट-फ़ील्ड का आबंटन कार्यान्वयन-परिभाषित है। बिट-फ़ील्ड की संरेखण कार्यान्वयन-परिभाषित है। बिट-फ़ील्ड कुछ संबोधित आवंटन इकाई में पैक किए जाते हैं।

नोट: कुछ मशीनों पर बिट-फ़ील्ड स्ट्रैडल आवंटन इकाइयां और दूसरों पर नहीं। बिट-फ़ील्ड को कुछ मशीनों पर दाएं से बाएं नियत किया गया है, दूसरों से बाएं से दाएं। – अंत नोट

मेरा मानना ​​है कि ये बिटफ़ेल्ड होंगे।

कड़ाई से बोलते हुए, बिटफ़ील्ड एक पूर्णांक, अहस्ताक्षरित int, या _Bool होना चाहिए। यद्यपि अधिकांश कंपलर कोई अभिन्न प्रकार ले जाएगा।

रेफरी सी 11 6.7.2.1:

बिट-फ़ील्ड का एक ऐसा प्रकार होगा जो _Bool, हस्ताक्षरित int, अहस्ताक्षरित int, या कुछ अन्य कार्यान्वयन-परिभाषित प्रकार का एक योग्य या अयोग्य संस्करण है।

आपका कंपाइलर संभवत: संग्रहण के 1 बाइट आवंटित करेगा, लेकिन इसे और अधिक पकड़ने के लिए स्वतंत्र है।

रेफरी सी 11 6.7.2.1:

एक कार्यान्वयन किसी पते वाले संग्रहण इकाई को थोड़ी-थोड़ी-थोड़ी-थोड़ी-थोड़ी-थोड़ी-थोड़ी-थोड़ी-सी पकड़ने के लिए आवंटित कर सकता है

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

रेफरी सी 11 6.7.2.1:

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