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.