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;
}