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

C#-এ দুটি বাইনরি সংখ্যার যোগফল বের করা

বাইনরি সংখ্যা যোগ করার জন্য বিটওয়াইজ অপারেশন বা ম্যানুয়াল বাইনরি অ্যাসিশন ব্যবহার করা যায়। নিচে দুটি পদ্ধতি দেখানো হলো।

পদ্ধতি ১: ম্যানুয়াল বাইনরি অ্যাসিশন (স্ট্রিং/লং আকারে)

এই পদ্ধতিতে বাইনরি সংখ্যাকে লং ইন্টিজার হিসেবে ট্রিট করে ডিজিট বাই ডিজিট যোগ করা হয়।


using System;

class Demo
{
    public static void Main(string[] args)
    {
        long val1 = 11110; // বাইনরি ১১১১০ = ডেসিমেল ৩০
        long val2 = 11100; // বাইনরি ১১১০০ = ডেসিমেল ২৮
        
        Console.WriteLine($"বাইনরি এক: {val1}");
        Console.WriteLine($"বাইনরি দুই: {val2}");
        
        long sum = AddBinary(val1, val2);
        Console.WriteLine($"যোগফল (বাইনরি): {sum}"); // ১১১০১০ = ডেসিমেল ৫৮
    }
    
    static long AddBinary(long val1, long val2)
    {
        long i = 0, rem = 0, res = 0;
        long[] sum = new long[64]; // ৬৪ বিট পর্যন্ত সাপোর্ট
        
        while (val1 != 0 || val2 != 0)
        {
            // বর্তমান বিট + ক্যারি
            sum[i++] = (val1 % 10 + val2 % 10 + rem) % 2;
            rem = (val1 % 10 + val2 % 10 + rem) / 2;
            
            val1 /= 10;
            val2 /= 10;
        }
        
        if (rem != 0) sum[i++] = rem;
        
        // রিভার্স করে রেজাল্ট বানান
        i--;
        while (i >= 0)
            res = res * 10 + sum[i--];
        
        return res;
    }
}

আউটপুট


বাইনরি এক: 11110
বাইনরি দুই: 11100
যোগফল (বাইনরি): 111010

পদ্ধতি ২: বিটওয়াইজ অপারেশন (দ্রুত এবং সঠিক)

আসল বাইনরি অপারেশন (নন-স্ট্রিং) দ্রুত এবং এরর-প্রুফ।


public static int AddBinaryBitwise(int a, int b)
{
    while (b != 0)
    {
        int carry = a & b;      // ক্যারি বের করুন (AND)
        a = a ^ b;              // যোগ করুন ক্যারি ছাড়া (XOR)
        b = carry << 1;         // ক্যারি লেফট শিফট
    }
    return a;
}

// ব্যবহার
int bin1 = 0b11110; // ৩০
int bin2 = 0b11100; // ২৮
int sum = AddBinaryBitwise(bin1, bin2); // ৫৮
Console.WriteLine(Convert.ToString(sum, 2)); // 111010

পদ্ধতি ৩: বাইনরি স্ট্রিং যোগ (বড় সংখ্যার জন্য)


public static string AddBinaryStrings(string a, string b)
{
    int i = a.Length - 1, j = b.Length - 1, carry = 0;
    var result = new System.Text.StringBuilder();
    
    while (i >= 0 || j >= 0 || carry > 0)
    {
        int sum = carry;
        if (i >= 0) sum += a[i--] - '0';
        if (j >= 0) sum += b[j--] - '0';
        
        result.Insert(0, sum % 2);
        carry = sum / 2;
    }
    return result.ToString();
}

// ব্যবহার
string s1 = "11110";
string s2 = "11100";
Console.WriteLine(AddBinaryStrings(s1, s2)); // 111010

বাইনরি স্ট্রিং ↔ ইন্টিজার কনভার্শন


// স্ট্রিং → ইন্ট (বাইনরি পার্স)
int val = Convert.ToInt32("11110", 2); // 30

// ইন্ট → বাইনরি স্ট্রিং
string binary = Convert.ToString(30, 2); // "11110"

// প‍্যাডিংসহ (৮ বিট)
string padded = Convert.ToString(30, 2).PadLeft(8, '0'); // "00011110"

তুলনামূলক সারসংক্ষেপ

পদ্ধতিপ্রকারসীমাবদ্ধতাব্যবহার
ম্যানুয়াল (লং)দশমিক ডিজিট বাইনরি৬৪ বিট পর্যন্ত, ধীরশিক্ষামূলক
বিটওয়াইজ (ইন্ট)আসল বাইনরি৩২/৬৪ বিট, দ্রুততমসাধারণ ব্যবহার
স্ট্রিং বেসডঅনলিমিটেড সাইজধীর, মেমরি বেশিবড় বাইনরি স্ট্রিং

গুরুত্বপূর্ণ নোট

মূল উদাহরণে val1 = 11110 লিখলে C# এটাকে ডেসিমেল ১১১১০ মনে করে, বাইনরি ১১১১০ নয়। বাইনরি লিটারেল লিখতে 0b11110 (C# 7.0+) ব্যবহার করুন।
  1. C#-এ সংখ্যাগুলো ট্রায়্যাঙ্গেল আকারে কীভাবে প্রদর্শন করবেন?

  2. পাইথনে কিথ (Keith) সংখ্যা খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে রিকার্শন দিয়ে প্রাকৃতিক সংখ্যাগুলোর যোগফল (Sum of Natural Numbers) বের করা

  4. Python-এ প্রাকৃতিক সংখ্যার যোগফল (Sum of Natural Numbers) বের করা