প্রদত্ত সমস্যায়, আমাদের একটি সংখ্যার প্রদত্ত সূচকের বিট আপডেট করতে হবে। নম্বর আপডেট করতে, আমরা একটি প্রদত্ত নম্বরে বিট ম্যানিপুলেশন অপারেশন ব্যবহার করতে পারি। উদাহরণস্বরূপ,
ইনপুট-1 −
N= 25 bit= 1 position= 2
আউটপুট −
29
ব্যাখ্যা − যেহেতু প্রদত্ত ইনপুট 25টি বাইনারিতে '11001' হিসাবে লেখা যেতে পারে যেখানে অবস্থান সূচকটি '2' এবং বিটটি '1'। প্রদত্ত অবস্থানে অঙ্কগুলি প্রতিস্থাপন করার পরে আউটপুট হবে '11101' যা '29' এর সমতুল্য।
এই সমস্যা সমাধানের পদ্ধতি
একটি সংখ্যার প্রদত্ত অবস্থান বা সূচকে, কাজটি ইনপুটে দেওয়া নির্দিষ্ট বিটের সাথে বিট আপডেট করা। প্রদত্ত অবস্থানে বিট আপডেট করার পদ্ধতি হল প্রথমে প্রদত্ত অবস্থানে বিট পরিষ্কার করা এবং তারপর বিট আপডেট করার জন্য একটি বাইনারি এবং অপারেশন সম্পাদন করা।
-
'বিট' হিসাবে আপডেট করার জন্য একটি সংখ্যা N, বিট ইনপুট নিন এবং অবস্থান বা সূচকের উপর আমাদের বিটটিকে 'পজিশন' হিসাবে আপডেট করতে হবে।
-
একটি অকার্যকর ফাংশন আপডেটবিট (int &n, int বিট, int অবস্থান) বর্তমান বিটের ঠিকানা, বিটের মান এবং বিটের সূচক নেয়। ফাংশনটি প্রদত্ত একটি দিয়ে বিট প্রতিস্থাপন করে সংখ্যার আপডেট করা মান প্রিন্ট করবে।
-
প্রদত্ত অবস্থানে বিট সাফ করুন এবং ফলাফলে ফলাফল বিট যোগ করুন।
-
একটি মুখোশ তৈরি করুন এবং ফলাফল সহ একটি 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।