আমাদের একটি সংখ্যা দেওয়া হয়েছে, আসুন সংখ্যা বলি এবং কাজটি হল একটি সংখ্যার সাথে 1 যোগ করা হলে পরিবর্তিত বিটের মোট সংখ্যা গণনা করা।
একটি সংখ্যার বাইনারি উপস্থাপনা প্রদত্ত সংখ্যাটিকে 0 এবং 1 এর আকারে রূপান্তর করে করা হয় এবং এটি বিভিন্ন পদ্ধতিতে করা হয়। একটি পদ্ধতিতে, আমরা একটি প্রদত্ত সংখ্যার LCM 2 দ্বারা গণনা করি এবং যদি একটি অনুস্মারক 0 ব্যতীত হয় তবে বিটটি 1 এ সেট করা হয় অন্যথায় এটি 0 এ সেট করা হবে৷
বিটগুলির জন্য সংযোজন টেবিল হল
0 + 1 = 1 1 + 0 = 1 0 + 0 = 0 1 + 1 = 1 ( 1 bit carry)
উদাহরণস্বরূপ
Input − num = 10 Output − count is : 1
ব্যাখ্যা − 10-এর বাইনারি উপস্থাপনা হল 1010 এবং যখন 1 যোগ করা হয় তখন প্রতিনিধিত্ব 1011 হয়ে যায়৷ স্পষ্টতই শুধুমাত্র একটি বিট পরিবর্তিত হয়েছে তাই গণনা হল 1৷
Input − num = 5 Output − count is : 2
ব্যাখ্যা − 5 এর বাইনারি উপস্থাপনা হল 101 এবং যখন 1 যোগ করা হয় তখন উপস্থাপনা 110 হয়ে যায়। স্পষ্টতই দুটি বিট পরিবর্তিত হয়েছে তাই গণনা হল 2
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
টাইপ পূর্ণসংখ্যার সংখ্যা ইনপুট করা যাক, int num
-
একটি ভেরিয়েবল ডিক্লেয়ার করুন যা কাউন্ট সংরক্ষণ করবে, ধরা যাক, int count
-
আরেকটি ভেরিয়েবল নিন, আসুন temp বলি যেটি সংখ্যার XOR গণনা করবে এবং এটিকে n^ (n + 1) এ সেট করবে
-
কাউন্ট ভেরিয়েবল কলে __builtin_popcount(temp)। এই ফাংশনটি একটি প্রদত্ত পূর্ণসংখ্যা বাইনারি উপস্থাপনায় সংখ্যা গণনা করা। এটি GCC কম্পাইলারের একটি অন্তর্নির্মিত ফাংশন।
-
গণনা ফেরত দিন
-
ফলাফল প্রিন্ট করুন।
উদাহরণ
#include <iostream> using namespace std; // Function to find number of changed bit int changedbit(int n){ int XOR = n ^ (n + 1); // Count set bits in xor value int count = __builtin_popcount(XOR); return count; } int main(){ int n = 10; cout <<"count is: " <<changedbit(n); return 0; }
আউটপুট
আমরা উপরের কোডটি চালালে আমরা নিম্নলিখিত আউটপুট পাব −
count is: 1