এই বিভাগে, আমরা দেখব কিভাবে একটি পূর্ণসংখ্যার 1 এর সম্পূর্ণ বের করা যায়। আমরা খুব দ্রুত এই কাজটি করতে কমপ্লিমেন্ট অপারেটর ব্যবহার করতে পারি, তবে এটি 32 বিটের পরিপূরক মান (4-বাইপ পূর্ণসংখ্যা) তৈরি করবে। এখানে আমরা n বিট সংখ্যার পরিপূরক চাই।
ধরুন আমাদের একটি সংখ্যা আছে 22। বাইনারি সমতুল্য হল 10110। পরিপূরক মান হল 01001 যা 9 এর সমান। এখন প্রশ্ন আসে, এই মানটি কিভাবে বের করব? প্রথমে আমাদের প্রদত্ত সংখ্যার বিটের সংখ্যা বের করতে হবে। ধরুন গণনাটি c (এখানে c =5 এর জন্য 22)। আমরা 5 1s করতে হবে. সুতরাং এটি হবে 11111। এটি করতে, আমরা 1 বার বাম c সংখ্যায় স্থানান্তর করব, তারপর এটি থেকে 1 বিয়োগ করব। 1 5 বার বামে স্থানান্তরিত করার পরে, এটি 100000 হবে, তারপর 1 বিয়োগ করুন, তাহলে এটি 11111 হবে। এর পরে পরিপূরক পেতে 11111 এবং 10110 দিয়ে XOR অপারেশন করুন।
উদাহরণ
#include <iostream> #include <cmath> using namespace std; int findComplement(int n) { int bit_count = floor(log2(n))+1; int ones = ((1 << bit_count) - 1); return ones ^ n; } int main() { int number = 22; cout << "One's Complement of " << number << " is: " << findComplement(number); }
আউটপুট
One's Complement of 22 is: 9