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

Chương trình C# chuyển đổi nhị phân sang thập phân

Chuyển số nhị phân (dạng số nguyên int, ví dụ 101) sang thập phân bằng cách nhân từng bit với lũy thừa của 2 theo vị trí.

Thuật toán

  • Duyệt từ phải sang trái (bit thấp → cao).
  • Bit tại vị trí i (từ 0) có trọng số 2^i.
  • Tổng: decimal = Σ (bit_i × 2^i).

Mã nguồn

using System;

namespace Demo {
    class MyApplication {
        static void Main(string[] args) {
            int num = 101; // Nhị phân: 1 0 1
            int binVal = num;
            int decVal = 0;
            int baseVal = 1; // 2^0
            
            while (num > 0) {
                int rem = num % 10;        // Lấy bit cuối (0 hoặc 1)
                decVal += rem * baseVal;   // Cộng vào kết quả
                num /= 10;                 // Bỏ bit cuối
                baseVal *= 2;              // Tăng lũy thừa 2
            }
            
            Console.WriteLine("Nhị phân: " + binVal);
            Console.WriteLine("Thập phân: " + decVal);
            Console.ReadLine();
        }
    }
}

Kết quả

Nhị phân: 101
Thập phân: 5

Cách hiện đại (Built-in)

// Chuỗi nhị phân → int
string binaryStr = "101";
int dec = Convert.ToInt32(binaryStr, 2); // 5

// int → chuỗi nhị phân
string bin = Convert.ToInt32(5).ToString(); // "101" - SAI! 
// Đúng:
string bin = Convert.ToString(5, 2); // "101"

Lưu ý

  • Code gốc nhận input là int (101) — chỉ phù hợp cho nhị phân ngắn (≤ 10 chữ số, vì int max ~2 tỷ).
  • Nhị phân dài (64-bit) → dùng string input + Convert.ToInt64(str, 2).
  • Không validate input: nếu nhập 102 (có chữ số 2) → kết quả sai. Nên kiểm tra str.All(c => c=='0' || c=='1').
  • Với số âm (bù 2): logic phức tạp hơn, dùng Convert.ToInt32 với chuỗi 32-bit.