Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
int n1, n, p = 1;
int dec = 0, i = 1, j, d;
Console.Write("\n");
Console.Write("Chuyen doi nhi phan thanh thap phan trong C#:\n");
Console.Write("--------------------------------------------");
Console.Write("\n\n");
Console.Write("Nhap mot so bat ky trong he nhi phan: ");
n = Convert.ToInt32(Console.ReadLine());
n1 = n;
for (j = n; j > 0; j = j / 10)
{
d = j % 10;
if (i == 1)
p = p * 1;
else
p = p * 2;
dec = dec + (d * p);
i++;
}
Console.Write("\nSo trong he nhi phan: {0}\nSo thap phan tuong duong la: {1} \n\n", n1, dec);
Console.ReadKey();
Cho mình hỏi nhiều vấn đề
- đầu tiên là không phải đầu chương trình khai báo gán i=1 rồi vì sao xuống dưới lại có else trường hợp i không phải bằng 1???
- với vì sao nếu i=1 thì lại nhân với 1 , còn không bằng lại nhân với 2
- phần vòng lặp ở for ,, j=j/10 ,, vậy j lấy từ đâu ??
mình mới học nên k hiểu rõ lắm
Hài mấy ông cứ thần thành hóa làm người ta sợ. Cái của bạn vòng lặp đầu thì i=1 thỏa mãn if còn những vòng lặp tiếp theo i++ lên thì sẽ là 2,3,...thì nó thực hiện trong else vậy thôi.
Cho số rồi ghi ra giấy step by step nhé!!!
Ok bạn,nếu bạn có học qua khoa học máy tính thì bạn sẽ biết cách đổi từ hệ nhị phân sang hệ thập phân,nếu chưa thì bạn xem ví dụ sau(hơi dài,nhớ đọc kĩ):
và đây là ngôn ngữ thuật toán của đoạn chương trình bạn đưa ra:
giải đáp:
----bạn thấy ở dòng thứ 20 thì có i++(i tăng lên 1)
----ở lần lặp đầu tiên i = 2^0=1,lần thứ 2 i = 2^1= 2 và cứ tiếp tục nhân 2...,còn tại sao i lại bằng 2^0 rồi lại là 2^1
thì mời bạn xem lại ví dụ đổi nhị phân sang thập phân
----ở dòng 11 bạn sẽ thấy ở phần khởi tạo vòng lặp for sẽ có j = n