কম্পিউটার টিউটোরিয়াল

XOR অপারেশন ব্যবহার করে বাইনারি স্ট্রিংয়ের ২'র কমপ্লিমেন্ট বের করা


এই বিভাগে আমরা দেখব কীভাবে বাইনারি স্ট্রিংয়ের ২'র কমপ্লিমেন্ট XOR অপারেশন দিয়ে বের করা যায়। ২'র কমপ্লิมেন্ট আসলে ১'র কমপ্লিমেন্ট + ১। আমরা XOR অপারেশন ব্যবহার করে ১'র কমপ্লিমেন্ট বের করব।

আমরা LSB (লিস্ট সিগনিফিক্যান্ট বিট) থেকে ট্রাভার্স করব এবং ০ খুঁজব। প্রথম ০ পাওয়া পর্যন্ত সব ১ কে ০ করব। তারপর সেই ০ কে ফ্লিপ করব।

আমরা LSB থেকে ট্রাভার্স করব। প্রথম ১ পাওয়া পর্যন্ত সব ০ কে উপেক্ষা করব। প্রথম ১ কে উপেক্ষা করে বাকি সব বিট XOR অপারেশন দিয়ে টগল করব।

অ্যালগরিদম

get2sComp(bin)

শুরু
    len := বাইনারি স্ট্রিংয়ের দৈর্ঘ্য
    flag := false
    i := len-1 থেকে 0 পর্যন্ত কমতে কমতে লুপ
        যদি bin[i] == '0' এবং flag সেট না থাকে, তবে
            পরবর্তী ইটারেশনে যান
        অন্যথায়
            যদি flag সেট থাকে, তবে
                bin[i] := bin[i] এর ফ্লিপ
           (flag := true)
    লুপ শেষ
    যদি flag সেট না থাকে, তবে
        bin-এর সাথে ১ যোগ করে রিটার্ন করুন
    অন্যথায়
        bin রিটার্ন করুন
শেষ

উদাহরণ কোড

#include <iostream>
using namespace std;

string get2sComplement(string bin) {
    int n = bin.length();
    bool flag = false;
    for (int i = n - 1; i >= 0; i--) {
        if (bin[i] == '0' && !flag) {
            continue;
        } else {
            if (flag)
                bin[i] = (bin[i] - '0') ^ 1 + '0';
            flag = true;
        }
    }
    if (!flag)
        return "1" + bin;
    else
        return bin;
}

int main() {
    string str;
    cout << "Enter a binary string: ";
    cin >> str;
    cout << "2's complement of " << str << " is " << get2sComplement(str);
    return 0;
}

আউটপুট

Enter a binary string: 10110110
2's complement of 10110110 is 01001010

  1. পাইথনে দেওয়া ইন্ডেক্স ব্যবহার করে স্ট্রিংয়ের ক্যারেক্টার পরিবর্তন করার প্রোগ্রাম

  2. পাইথন রেজেক্স ব্যবহার করে স্ট্রিং থেকে ‘1(0+)1’ প্যাটার্ন খুঁজে বের করা

  3. পাইথনে itertools.permutations() ব্যবহার করে স্ট্রিং-এর পারমুটেশন (Permutation) বের করা

  4. পাইথনে দেওয়া স্ট্রিং তৈরি হওয়া পর্যন্ত র‍্যান্ডম স্ট্রিং জেনারেট করা