em đang làm đề tài về quản lý vùng nhớ = c#
em lưu số thực theo chuẩn ieee 754 với độ chính xác kép là 64bit tức 8 byte nhưng lúc em chuyển đổi số bên phần thập phân sang nhị phân thì có vấn đề phát sinh đó là lúc em thử chuyển 0.9 sang nhị phân nó ra dãy số tới 53 số như vậy nè
11100110011001100110011001100110011001100110011001 101
trong khi phần định trị M chỉ có 52 :|
Code chuyển số phân phần thập phân qua nhị phân của em đây:
double a = 0.9;
a = a * 2;
string chuoi = "";
if (a == 1.0)
richTextBox1.Text = "1";
while (a != 1)
{
if (a > 1)
{
chuoi += "1";
a = a - 1;
}
else if (a > 0)
chuoi += "0";
a = a * 2;
}
chuoi = chuoi + "1";
richTextBox1.Text = chuoi + " " + chuoi.Length.ToString();
Không biết code có sai chỗ nào ko nhưng em thử khoảng một vài số mẫu rồi thấy ko sai
ví dụ: 0.6875 nó ra đúng là 1011
0.5 nó ra 1
0.25 nó ra 01
Giả sử code ko sai thì với độ dài như vậy sao em có thể đẩy những số bên trái dấu . sang phải để thành dạng chuẩn 1. mấy được
Ko biết em có hiểu sai cách lưu của dạng chuẩn này ko mong mấy huynh giúp em với . Thanks
Bookmarks