मैं इस फैशन में एक बाइट में कुछ बिट्स पैक करने के लिए की जरूरत है:सी/सी ++ बिटफील्ड बनाम बिटवाई ऑपरेटर बिट्स को सिंगल आउट करने के लिए, जो तेज, बेहतर, अधिक पोर्टेबल है?
struct
{
char bit0: 1;
char bit1: 1;
} a;
if(a.bit1) /* etc */
या:
if(a & 0x2) /* etc */
स्रोत कोड स्पष्टता से यह मेरे लिए बहुत स्पष्ट है कि bitfields neater हैं। लेकिन कौन सा विकल्प तेज़ है? मुझे पता है कि गति अंतर बहुत अधिक नहीं होगा, लेकिन जैसा कि मैं उनमें से किसी का उपयोग कर सकता हूं, अगर कोई तेज़, बेहतर है।
दूसरी तरफ, मैंने पढ़ा है कि प्लेटफॉर्म पर उसी क्रम में बिट्स की व्यवस्था करने की गारंटी नहीं है, और मैं चाहता हूं कि मेरा कोड पोर्टेबल हो।
नोट्स: यदि आप 'प्रोफ़ाइल' का उत्तर देने की योजना बना रहे हैं, तो मैं करूँगा, लेकिन जैसा कि मैं आलसी हूं, अगर किसी के पास पहले से ही जवाब है, तो बेहतर होगा।
कोड गलत हो सकता है, यदि आप चाहें तो मुझे सही कर सकते हैं, लेकिन याद रखें कि इस प्रश्न का क्या बिंदु है और कृपया इसे आजमाएं और जवाब दें।
आपको http://stackoverflow.com/questions/1044654/bitfield-manipulation-in-c में रुचि हो सकती है। कम से कम एक और समान प्रश्न है जिस पर मुझे टिप्पणी याद है (यह ऐसा नहीं लगता है)। –
बिटफील्ड: आप बाहर हैं! सभी को धन्यवाद। – Petruza
वाह। हमने यहां एक मूल्यवान सबक सिखाया। –