এই বিভাগে, আমরা দেখব কিভাবে একটি পূর্ণসংখ্যার 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