bitmask - Bit manipulation in C - builtin function -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 21 जवाब

क्या इसमें कोई भी फ़ंक्शन है सी मुझे पहली बिट के बराबर 32-बिट पूर्णांक में शून्य के बराबर देता है?

मुझे पता है मैं सभी 32-बिट के लिए एक for-loop का उपयोग कर देख सकता हूँ:

  मान & Lt; --- पैरामीटर (uint32_t) के लिए (इंट आई = 0; आई & lt; 32; i ++) {uint32_t pos = 1 & lt; & lt; मैं; अगर (स्थिति मान) वापसी i; // xor} वापसी -1;  

दुर्भाग्य से ऐसा करने के लिए कोई मानकीकृत सी फ़ंक्शन नहीं है, लेकिन कई सी कंपलेक एक को प्रस्तुत करते हैं उनका अपना। जब आप जीसीसी का उपयोग करते हैं तो यह _builtin_ctz फ़ंक्शन है जब आप माइक्रोसॉफ्ट विज़ुअल सी का उपयोग करते हैं तो यह _BitScanForward फ़ंक्शन है।

यदि आप कई अलग-अलग कंपाइलरों पर संकलित प्रोग्राम लिखना चाहते हैं तो आप बहुत सारे #ifdef बयान विभिन्न तरीकों से एक ही बात प्रदान करने के लिए (मैं उम्मीद करता हूं कि सी कमेटी पहले से ही एक को जनादेश देगी!)


Comments