[Lập trình C] Binary converter

Sunday, April 11, 2021
Edit this post


Một bài tập kinh điển mà hẳn là những ai học IT đều biết. Nhập từ bàn phím 1 số thập phân nguyên dương kiểu int, in ra màn hình biểu diễn nhị phân của số đã cho.

Ví dụ:
30 = 11110
79 = 1001111
130 = 10000010

Nguyên tắc của phương pháp này là lấy số cần chuyển đổi chia cho 2 (kết quả chỉ lấy phần nguyên), sau đó tiếp tục lấy kết quả chia 2 (và cũng chỉ lấy phần nguyên), kết quả số nhị phân thu được là tập hợp các số dư của các phép chia.

Minh họa cách chuyển số 30 từ hệ thập phân sang nhị phân

Sử dụng đệ quy:

#include <stdio.h>

void binaryConvert(int n) {
    if (n == 0 || n == 1) {
        printf("%d", n);
        return;
    }
    binaryConvert(n / 2);
    printf("%d", n % 2);
}

int main()
{
    int n;
    scanf("%d", &n);
    binaryConvert(n);
    return 0;
}

Không sử dụng đệ quy:

#include <stdio.h>
#include <stdlib.h>

void binaryConvert(int n) {
    int len = 0;
    int* b = (int*) malloc(sizeof(int));
    do {
        b = (int*) realloc(b, (len + 1) * sizeof(int));
        b[len++] = n % 2;
        n /= 2;
    } while(n);
    for (len--; len >= 0;) printf("%d", b[len--]);
    free(b);
}

int main()
{
    int n;
    scanf("%d", &n);
    binaryConvert(n);
    return 0;
}

.
Xin vui lòng chờ đợi
Dữ liệu bài viết đang được tải về

BÌNH LUẬN

Cảm ơn bạn đã đọc bài viết của Cuộc Sống Tối Giản. Đây là một blog cá nhân, được lập ra nhằm mục đích lưu trữ và chia sẻ mọi thứ hay ho theo chủ quan của chủ sở hữu. Có lẽ vì vậy mà bạn sẽ thấy blog này hơi (rất) tạp nham. Mọi chủ đề đều có thể được tìm thấy ở đây, từ tâm sự cá nhân, kinh nghiệm sống, phim ảnh, âm nhạc, lập trình... Phần lớn các bài đăng trong blog này đều được tự viết, trừ các bài có tag "Sponsored" là được tài trợ, quảng cáo, hoặc sưu tầm. Để ủng hộ blog, bạn có thể share những bài viết hay tới bạn bè, người thân, hoặc có thể follow Kênh YouTube của chúng tôi. Nếu cần liên hệ giải đáp thắc mắc hoặc đặt quảng cáo, vui lòng gửi mail theo địa chỉ songtoigianvn@gmail.com. Một lần nữa xin được cảm ơn rất nhiều!!!
© Copyright by CUỘC SỐNG TỐI GIẢN
Loading...