Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

บวกเลขฐานสอง (Binary Addition) ใน C# โดยไม่ใช้ Method

ภาพรวม

ทำการบวกเลขฐานสองโดยตรงใน Main method โดยไม่แยกเป็นเมธอดแยกต่างหาก ใช้ Logic เหมือนกันกับการบวกแบบ Manual

โค้ดตัวอย่าง


using System;

class Demo {
    public static void Main(string[] args) {
        long val1 = 11010; // binary as decimal digits
        long val2 = 10100;

        Console.WriteLine($"Binary one: {val1}");
        Console.WriteLine($"Binary two: {val2}");

        long i = 0, rem = 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;

        Console.Write("Sum = ");
        i--;
        while (i >= 0) {
            Console.Write(sum[i--]);
        }
        Console.WriteLine();
    }
}

ผลลัพธ์


Binary one: 11010
Binary two: 10100
Sum = 101110

ตรวจสอบความถูกต้อง

  • 11010₂ = 26₁₀
  • 10100₂ = 20₁₀
  • 26 + 20 = 46₁₀
  • 101110₂ = 32+8+4+2 = 46₁₀ ✓

วิธีที่แนะนำ (Standard Approach)


using System;

string bin1 = "11010";
string bin2 = "10100";

// แปลงเป็น integer
int n1 = Convert.ToInt32(bin1, 2); // 26
int n2 = Convert.ToInt32(bin2, 2); // 20

// บวก
int sum = n1 + n2; // 46

// แปลงกลับ binary string
string result = Convert.ToString(sum, 2); // "101110"

Console.WriteLine($"{bin1} + {bin2} = {result}");

สำหรับเลขใหญ่: BigInteger


using System.Numerics;

BigInteger n1 = 0, n2 = 0;
foreach (char c in bin1) n1 = n1 * 2 + (c - '0');
foreach (char c in bin2) n2 = n2 * 2 + (c - '0');

BigInteger sum = n1 + n2;

// Convert back to binary string
string result = "";
while (sum > 0) {
    result = (sum % 2) + result;
    sum /= 2;
}
Console.WriteLine(result);

สรุป

  • วิธี Manual: เข้าใจหลักการ แต่ error-prone, จำกัดขนาด (long max 19 digits)
  • วิธี Convert: สะดวก เร็ว ถูกต้อง รองรับ 32-bit
  • BigInteger: ไม่จำกัดขนาด เหมาะสำหรับ binary string ยาวมาก