Thành công! Đăng nhập thành công.
Java

Chuyển số thập phân sang nhị phân và ngược lại trong Java

bởi Phạm Xuân Hoài - 8 tháng 3, 2026

Chuyển số thập phân sang nhị phân và ngược lại trong Java

📖 Tài liệu


Trong lập trình, đôi khi chúng ta cần chuyển đổi giữa hệ thập phân (Decimal)hệ nhị phân (Binary).

Ví dụ:

30 (hệ 10) = 11110 (hệ 2)

Trong bài viết này chúng ta sẽ thực hiện:

  • Chuyển hệ 10 → hệ 2
  • Chuyển hệ 2 → hệ 10

bằng Java.


Ý tưởng thuật toán

1. Chuyển hệ 10 → hệ 2

Nguyên tắc:

Chia số cho 2 liên tục
Lấy phần dư mỗi lần chia
Đảo ngược các phần dư lại

Ví dụ chuyển số 30 sang hệ nhị phân:

30 / 2 = 15 dư 0
15 / 2 = 7  dư 1
7  / 2 = 3  dư 1
3  / 2 = 1  dư 1
1  / 2 = 0  dư 1

Ta thu được các số dư:

0 1 1 1 1

Đảo ngược lại:

11110

2. Chuyển hệ 2 → hệ 10

Công thức:

n = b0*2^0 + b1*2^1 + b2*2^2 + ...

Ví dụ:

11110 (2)

= 0×2^0
+ 1×2^1
+ 1×2^2
+ 1×2^3
+ 1×2^4
= 0 + 2 + 4 + 8 + 16
= 30

Code Java

package vn.info.error404labs.Bai7;

public class Example {

	public static void main(String[] args) {

		// Chuyển hệ 10 -> hệ 2
		// 30(10) -> 11110

		int n = 30;

		int[] save01 = new int[1000];
		int count = 0;

		while(n > 0) {
			int r = n % 2;
			save01[count++] = r;

			n /= 2;
		}

		System.out.print("Hệ 2: ");
		for (int i = count - 1; i >= 0; i--) {
			System.out.print(save01[i]);
		}

		// Chuyển hệ 2 -> hệ 10
		// 11110(2) -> 30

		int sum = 0;
		for(int i = 0; i < count; i++) {
			sum += save01[i] * (int)Math.pow(2, i);
		}

		System.out.println("\nHệ 10: " + sum);

	}

}

Giải thích code

Khai báo biến

int n = 30;

Số cần chuyển sang hệ nhị phân.


Mảng lưu các bit

int[] save01 = new int[1000];

Mảng này dùng để lưu các bit 0 và 1 khi chia cho 2.


Chia 2 liên tục

while(n > 0) {
	int r = n % 2;
	save01[count++] = r;
	n /= 2;
}

Ý nghĩa:

n % 2  → lấy phần dư (0 hoặc 1)
lưu vào mảng
n /= 2 → tiếp tục chia

In số nhị phân

for (int i = count - 1; i >= 0; i--) {
	System.out.print(save01[i]);
}

Vì các phần dư được lưu ngược thứ tự, nên ta cần in từ cuối mảng về đầu.


Chuyển lại sang hệ 10

for(int i = 0; i < count; i++) {
	sum += save01[i] * (int)Math.pow(2, i);
}

Áp dụng công thức:

bit × 2^vị_trí

Sau đó cộng tất cả lại để ra số thập phân ban đầu.


Kết quả chương trình

Hệ 2: 11110
Hệ 10: 30

Kết luận

Qua bài này chúng ta học được:

  • Cách chuyển hệ thập phân sang hệ nhị phân
  • Cách chuyển hệ nhị phân sang hệ thập phân
  • Hiểu rõ hơn về vòng lặp và mảng trong Java

Đây là một bài tập rất tốt cho người mới bắt đầu học lập trình.