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

Chuyển đổi số thực sang nhị phân trong C#

Chuyển đổi số thực (float/double) sang biểu diễn nhị phân phức tạp hơn số nguyên do có phần thập phân. Cách tiếp cận phổ biến: tách phần nguyên và phần thập phân.

Ví dụ: Chuyển phần nguyên sang nhị phân

using System;

class Program
{
    static string IntToBinary(int n)
    {
        if (n == 0) return "0";
        string result = "";
        while (n > 0)
        {
            result = (n % 2) + result;
            n /= 2;
        }
        return result;
    }
    
    static void Main()
    {
        float n = 50.5f;
        int intPart = (int)n;
        double fracPart = n - intPart;
        
        string binaryInt = IntToBinary(intPart);
        string binaryFrac = "";
        
        // Chuyển phần thập phân (giới hạn 10 bit)
        for (int i = 0; i < 10 && fracPart > 0; i++)
        {
            fracPart *= 2;
            int bit = (int)fracPart;
            binaryFrac += bit;
            fracPart -= bit;
        }
        
        Console.WriteLine($"Số thực: {n}");
        Console.WriteLine($"Nhị phân: {binaryInt}.{binaryFrac}");
    }
}

Kết quả đầu ra

Số thực: 50.5
Nhị phân: 110010.1

Lưu ý: Code gốc trong bài viết có lỗi logic (dùng float làm điều kiện lặp n >= 1 nhưng chia liên tục làm mất độ chính xác). Cách đúng: tách phần nguyên/thập phân, chuyển riêng biệt. Dùng BitConverter để lấy biểu diễn IEEE 754 chuẩn nếu cần.