इस भाग में, हम देखेंगे कि किसी पूर्णांक का 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