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

Chương trình C chuyển đổi số thập phân thành nhị phân (phần nguyên và phần thập phân)

Quy tắc chuyển đổi:

  • Phần nguyên: Chia liên tiếp cho 2, lấy phần dư theo thứ tự ngược lại.
  • Phần thập phân: Nhân liên tiếp với 2, lấy phần nguyên.

Ví dụ 1: Chuyển 25 sang nhị phân

25 / 2 = 12 dư 1
12 / 2 = 6  dư 0
6  / 2 = 3  dư 0
3  / 2 = 1  dư 1
1  / 2 = 0  dư 1
=> 11001

Ví dụ 2: Chuyển 0.7 sang nhị phân

0.7 * 2 = 1.4 -> 1
0.4 * 2 = 0.8 -> 0
0.8 * 2 = 1.6 -> 1
0.6 * 2 = 1.2 -> 1
0.2 * 2 = 0.4 -> 0
0.4 * 2 = 0.8 -> 0
=> 0.101100

Vậy 25.7 = 11001.101100

Chương trình C

#include <stdio.h>

int main() {
    long double fraDecimal, fraBinary, bFractional = 0.0, dFractional, fraFactor = 0.1;
    long int dIntegral, bIntegral = 0;
    long int intFactor = 1, remainder, temp, i;

    printf("Nhập số thập phân: ");
    scanf("%Lf", &fraDecimal);

    dIntegral = (long int)fraDecimal;
    dFractional = fraDecimal - dIntegral;

    // Chuyển phần nguyên
    while (dIntegral != 0) {
        remainder = dIntegral % 2;
        bIntegral = bIntegral + remainder * intFactor;
        dIntegral = dIntegral / 2;
        intFactor = intFactor * 10;
    }

    // Chuyển phần thập phân (6 chữ số)
    for (i = 1; i <= 6; i++) {
        dFractional = dFractional * 2;
        temp = (long int)dFractional;
        bFractional = bFractional + fraFactor * temp;
        if (temp == 1)
            dFractional = dFractional - temp;
        fraFactor = fraFactor / 10;
    }

    fraBinary = bIntegral + bFractional;
    printf("Giá trị nhị phân tương đương: %Lf\n", fraBinary);
    return 0;
}

Kết quả

Nhập số thập phân: 5.7
Giá trị nhị phân tương đương: 101.101100