এই বিভাগে আমরা দেখব কিভাবে আমরা একটি বাইনারি স্ট্রিং এ XOR অপারেশন ব্যবহার করে 2 এর পরিপূরক খুঁজে পেতে পারি। 2 এর পরিপূরক আসলে 1 এর পরিপূরক + 1। আমরা 1 এর পরিপূরক পেতে XOR অপারেশন ব্যবহার করব।
আমরা LSb থেকে স্ট্রিংটি অতিক্রম করব, এবং 0 খুঁজব। যতক্ষণ না আমরা একটি 0 পাই ততক্ষণ আমরা সমস্ত 1 এর 0 থেকে ফ্লিপ করব। তারপর পাওয়া 0 ফ্লিপ করব।
আমরা LSb থেকে পাড়ি দেব। তারপর সমস্ত 0 উপেক্ষা করে যতক্ষণ না আমরা 1 পাই। প্রথম 1 উপেক্ষা করে, আমরা XOR অপারেশন ব্যবহার করে সমস্ত বিট টগল করব।
অ্যালগরিদম
get2sComp(bin)
begin len :=বাইনারি স্ট্রিং ফ্ল্যাগের দৈর্ঘ্য :=i এর জন্য মিথ্যা :=len-1 0 থেকে নিচে, যদি bin[i] 0 হয়, এবং পতাকা সেট করা না থাকে, তাহলে পরবর্তী অংশটিকে উপেক্ষা করুন, সেখানে যান পরবর্তী পুনরাবৃত্তি অন্য যদি পতাকা সেট করা থাকে, তাহলে bin[i] :=বিন[i] শেষ হলে ফ্ল্যাগ :=true এন্ড যদি করা হয় যদি পতাকা সেট করা না থাকে, তাহলে বিনের সাথে 1 সংযুক্ত করুন এবং অন্যথায় ফিরুন bin শেষ ifendপ্রে>উদাহরণ
#includenamespace ব্যবহার করে std;string get2sComplement(string bin) { int n =bin.length(); bool flag =মিথ্যা; //পতাকা ব্যবহার করা হয় যদি 1 এর জন্য দেখা হয় (int i =n - 1; i>=0; i--) { // শেষ বিট থেকে ট্রাভার্স যদি (bin[i] =='0' &&!পতাকা) { চালিয়ে যাওয়া } else { যদি (পতাকা) বিন[i] =(বিন[i] - '0') ^ 1 + '0'; // XOR ব্যবহার করে বিট ফ্লিপ করুন, তারপর ASCII flag =true এ রূপান্তর করুন; } } যদি (!পতাকা) // যদি 1 না থাকে, শুধু 1টি রিটার্ন "1" + বিন ঢোকান; else return bin;}int main() { স্ট্রিং str; cout <<"একটি বাইনারি স্ট্রিং লিখুন:"; cin>> str; cout <<"" < আউটপুট
একটি বাইনারি স্ট্রিং লিখুন:101101102 এর 10110110 এর পরিপূরক হল 01001010