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.
Sử dụng đệ quy:
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;
}