दी गई समस्या में हमें किसी संख्या के दिए गए सूचकांक के बिट को अद्यतन करना होता है। नंबर को अपडेट करने के लिए, हम दिए गए नंबर पर बिट मैनिपुलेशन ऑपरेशन का उपयोग कर सकते हैं। उदाहरण के लिए,
इनपुट-1 -
N= 25 bit= 1 position= 2
आउटपुट -
29
स्पष्टीकरण - चूंकि दिए गए इनपुट 25 को बाइनरी में '11001' के रूप में लिखा जा सकता है जबकि स्थिति सूचकांक '2' है और बिट '1' है। दिए गए स्थान पर अंकों को बदलने के बाद आउटपुट '11101' होगा जो '29' के बराबर है।
इस समस्या को हल करने का तरीका
किसी संख्या की दी गई स्थिति या अनुक्रमणिका में, कार्य इनपुट में दिए गए विशेष बिट के साथ बिट को अद्यतन करना है। दिए गए स्थान पर बिट को अपडेट करने का तरीका पहले दिए गए स्थान पर बिट को साफ़ करना है और फिर बिट को अपडेट करने के लिए बाइनरी और ऑपरेशन करना है।
-
इनपुट एक नंबर एन लें, बिट को 'बिट' के रूप में अपडेट करने के लिए और स्थिति या इंडेक्स जिस पर हमें बिट को 'पोजिशन' के रूप में अपडेट करना है।
-
एक शून्य फ़ंक्शन अपडेटबिट (इंट एंड एन, इंट बिट, इंट पोजीशन) वर्तमान बिट, बिट वैल्यू और बिट के इंडेक्स का पता लेता है। फंक्शन बिट को दिए गए नंबर से बदल कर नंबर के अपडेटेड वैल्यू को प्रिंट करेगा।
-
दिए गए स्थान पर बिट साफ़ करें और परिणामी बिट को परिणाम में जोड़ें।
-
एक मास्क बनाएं और परिणाम के साथ AND ऑपरेशन करें।
-
हमारे द्वारा बनाए गए मास्क के साथ बाइनरी या ऑपरेशन करें और इंडेक्स में अपडेट किए जाने वाले मान के साथ सही शिफ्ट ऑपरेशन करें।
उदाहरण
#include<iostream> using namespace std; void updateBit(int &n,int bit, int pos){ int clearBit= ~(1<<pos); int mask= n & clearBit; n= mask |(bit<<pos); } int main(){ int n=25; int bit=1; int pos=2; updateBit(n,bit,pos); cout<<n; }
आउटपुट
उपरोक्त कोड को चलाने से आउटपुट इस प्रकार उत्पन्न होगा,
29
चूंकि इनपुट 25 है जो बाइनरी प्रतिनिधित्व में 11001 है। '2' की स्थिति को '1' से बदलने के बाद, यह बाइनरी में 11101 हो जाएगा जो कि 29 है।