Menu
CoddyTech

Giới thiệu

Bài học 18 trên 20 trong khóa học Câu đố toán học của Coddy.

Số nhị phân (binary number) là một số được biểu diễn trong hệ đếm cơ số 2 hay hệ số nhị phân, một phương pháp biểu diễn toán học chỉ dùng hai ký hiệu: thường là “0” (không) và “1” (một). [Theo Wikipedia, bách khoa toàn thư tự do]

Các ký hiệu: 110=12, 210=102, 310=112, 410=1002 có nghĩa là các số 1, 2, 3 và 4 trong hệ thập phân (hệ đếm cơ số 10) bằng 1, 10, 11 và 100 trong hệ nhị phân.

Đếm trong hệ nhị phân cũng tương tự như đếm trong bất kỳ hệ đếm nào khác. Bắt đầu từ một chữ số, ta lần lượt đi qua từng ký hiệu theo thứ tự tăng dần.

 

Để chuyển một số nguyên (integer) cơ số 10 sang dạng tương đương ở cơ số 2 (nhị phân), ta chia số đó cho hai. Số dư là bit có trọng số thấp nhất (bit ngoài cùng bên phải). Ta tiếp tục chia thương cho hai; số dư của phép chia đó sẽ trở thành bit có trọng số thấp tiếp theo. Quá trình này lặp lại cho đến khi thương bằng một. Dãy số dư (bao gồm cả thương cuối cùng bằng một) tạo thành giá trị nhị phân, vì mỗi số dư khi chia cho hai đều phải là không hoặc một. Ví dụ, 510 được biểu diễn là 1012, vì:

Năm chia hai bằng 2, dư một: 5:2 = 2(1). Vậy bit có trọng số thấp nhất là một. Tiếp theo, 2:2=1(0). Vậy bit có trọng số thấp tiếp theo là không, và bit tiếp theo nữa là một.

 

challenge icon

Thử thách

Dễ

Viết một hàm calcBinary nhận một số nguyên ở hệ cơ số 10 và trả về số nhị phân tương ứng dưới dạng chuỗi.

Hãy thử thực hiện mà không dùng các hàm có sẵn.

Tự làm thử

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include "solution.h"

int main() {
    int n;
    if (scanf("%d", &n) != 1) n = 0;
    char* r = calcBinary(n);
    printf("%s\n", r);
    return 0;
}

Tất cả bài học trong Câu đố toán học

Tự luyện tập: Trình biên dịch C online