java - set bits 1-3 in an int given an int with only bits 1-3 set as desired -
अहस्ताक्षरित int x = 0xdeadbeef; अहस्ताक्षरित int y = 0x00000006; अहस्ताक्षरित int z = 0xdeadbee7; x और y में मानों से z मान की गणना कैसे करें बिट्स 1-3 का y है 011 और मुझे बिट्स से प्रतिस्थापित किया जाना चाहिए x में मान के 1-3 बिट्स चाहिए 1-3 से y अन्य बिट्स को छोड़कर के रूप में वे हैं।
यह जैसे आप चाहिए:
- मास्क ऑफ बिट्स 1-3 ताकि वे नहीं सेट
- या बिट्स के परिणाम 1- 3 y
ऐसा:
// 0xe == 8 + 4 + 2 (यानी बिट्स 1-3) z = (x & amp; 0xe) | (वाई एंड 0xe); ध्यान दें कि ~ बिटवर्ड उलटा ऑपरेटर है, इसलिए 3 बिट्स को साफ़ करने के लिए आप उन बिट सेटों के उलटा लेते हैं, और उपयोग करते हैं वर्तमान मान के साथ उस व्युत्क्रम के बिटवर्ड और। आप केवल | Y के बजाय | (Y & amp; 0xe) यदि आप जानते हैं कि केवल बीट्स 1-3 को y में सेट किया जाएगा। (ध्यान दें कि मैंने मान लिया है कि "बिट्स 1-3 "का अर्थ है बिट्स 0, 0 से शुरू करने के सामान्य बिट-गिनती तंत्र का उपयोग करते हुए, मान 8, 4 और 2 के साथ बिट्स। यदि आप" नीचे तीन बिट्स "का मतलब है, जो आमतौर पर बिट्स 0-2 हो, डी कोड में 0x के बजाय 7 का उपयोग करें।)
Comments
Post a Comment