मेरे पास 32 बिट मान है जो 32 अलग-अलग राज्यों का प्रतिनिधित्व करता है। मेरे पास एक और 32 बिट मान भी है जो नियंत्रित करता है कि कौन से बिट्स लॉक हैं या किसी एप्लिकेशन द्वारा बदला जा सकता है।

उदाहरण के लिए (संक्षिप्तता के लिए 4 बिट मास्क का उपयोग करना)

Example 1
Value          1010
Lock Mask      1000 - i.e. the 4th bit is locked, i.e. can't be altered
Incoming value 0100
New Result     1100 - 4th bit unchanged

Example 2
Value          0011
Lock Mask      1000 - i.e. the 4th bit is locked, i.e. can't be altered
Incoming value 1100
New Result     0100 - 4th bit unchanged

क्या कोई कृपया समझा सकता है कि मैं इसे कैसे प्राप्त कर सकता हूं। हो सकता है कि मुझे मुखौटा बदलने की आवश्यकता हो ताकि यह बिट्स दिखाए जिन्हें बदला जा सकता है, यानी उपरोक्त उदाहरण में 0111 ... मुझे नहीं पता।

सादर मार्क।

0
ScaryAardvark 11 नवम्बर 2019, 10:49

1 उत्तर

सबसे बढ़िया उत्तर

एक सी-जैसी भाषा मानते हुए जहां & बिटवाइज़-और है; | बिटवाइज़-या है; और ~ बिटवाइज़-पूरक है:

new_value = (value & locked) | (incoming & ~locked);

आप | के बजाय + का उपयोग कर सकते हैं, अगर आपको लगता है कि यह अधिक पठनीय था।

1
rici 11 नवम्बर 2019, 08:03