Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Tổng hai số nhị phân trong C#

Cộng hai số nhị phân biểu diễn dưới dạng số nguyên (ví dụ: 11110 + 11100). Xử lý bit bởi bit từ phải sang trái với nhớ (carry).

Ví dụ minh họa

using System;

class Program
{
    static long AddBinary(long val1, long val2)
    {
        long[] sum = new long[64]; // Đủ lớn cho 64-bit
        int i = 0, carry = 0;
        
        while (val1 != 0 || val2 != 0)
        {
            int bit1 = (int)(val1 % 10);
            int bit2 = (int)(val2 % 10);
            
            sum[i++] = (bit1 + bit2 + carry) % 2;
            carry = (bit1 + bit2 + carry) / 2;
            
            val1 /= 10;
            val2 /= 10;
        }
        
        if (carry != 0) sum[i++] = carry;
        
        // Ghép kết quả (đảo ngược mảng)
        long result = 0;
        while (i > 0) result = result * 10 + sum[--i];
        
        return result;
    }
    
    static void Main()
    {
        long val1 = 11110; // 30 decimal
        long val2 = 11100; // 28 decimal
        
        Console.WriteLine($"Nhị phân 1: {val1}");
        Console.WriteLine($"Nhị phân 2: {val2}");
        Console.WriteLine($"Tổng: {AddBinary(val1, val2)}"); // 111010 = 58 decimal
    }
}

Kết quả đầu ra

Nhị phân 1: 11110
Nhị phân 2: 11100
Tổng: 111010

Cách tốt hơn: Chuyển sang số nguyên, cộng, chuyển lại nhị phân:

static string AddBinaryBetter(string bin1, string bin2)
{
    int n1 = Convert.ToInt32(bin1, 2);
    int n2 = Convert.ToInt32(bin2, 2);
    return Convert.ToString(n1 + n2, 2);
}