Trong Java để chuyển đổi một số từ hệ thập phân sang nhị phân chúng ta có những cách sau:
- Sử dụng toBinaryString() method trong Integer class.
- Tự triển khai theo lý thuyết được cung cấp sẵn.
- Sử dụng stack
Sử dụng toBinaryString
Integer class cung cấp sẵn cho chúng ta một method dùng để chuyển đổi một số thập phân sang nhị phân cách dễ dàng, nhanh chóng.
class DecimalBinaryExample{ public static void main(String a[]){ System.out.println("Binary representation of 8: "); System.out.println(Integer.toBinaryString(8)); System.out.println("\nBinary representation of 45: "); System.out.println(Integer.toBinaryString(45)); System.out.println("\nBinary representation of 999: "); System.out.println(Integer.toBinaryString(999)); } }
Output
Binary representation of 8: 1000 Binary representation of 45: 101101 Binary representation of 999: 1111100111
Tự triển khai
Nếu các bạn là người mới và muốn tự mình triển khai để có thể hiểu rõ hơn về lý thuyết cũng như thực hành.
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.
Ví dụ với n = 8, Ở mỗi bước ta thực hiện phép chia dư cho 2 để lấy số dư và sau đó thực hiện chia cho 2 cho tới khi n == 0.
0, 4 => 8 % 2 * 10 ^ 0
0, 2 => 4 % 2 * 10 ^ 1
0, 1 => 2 % 2 * 10 ^ 2
1, 0 => 1 % 2 * 10 ^ 3
Như vậy chúng ta có kết quả – Hệ nhị phân của 8 là 1000.
import java.util.Collections; class DecimalBinaryExample{ public void convertBinary(int num){ int binary[] = new int[40]; int index = 0; while(num > 0){ binary[index++] = num%2; num = num/2; } for(int i = index-1;i >= 0;i--){ System.out.print(binary[i]); } } public static void main(String a[]){ DecimalBinaryExample obj = new DecimalBinaryExample(); System.out.println("Binary representation of 8: "); obj.convertBinary(8); System.out.println("\nBinary representation of 45: "); obj.convertBinary(45); System.out.println("\nBinary representation of 999: "); obj.convertBinary(999); } }
Output
Binary representation of 8: 1000 Binary representation of 45: 101101 Binary representation of 999: 1111100111
Sử dụng Stack
Đây cũng là một cách tự triển khai số thập phân sang nhị phân, tuy nhiên có áp dụng Stacm – Cấu trúc dữ liệu vào.
import java.util.*; class DecimalBinaryStack { public static void main(String[] args) { Scanner in = new Scanner(System.in); // Create Stack object Stack<Integer> stack = new Stack<Integer>(); // User input System.out.println("Enter decimal number: "); int num = in.nextInt(); while (num != 0) { int d = num % 2; stack.push(d); num /= 2; } System.out.print("\nBinary representation is:"); while (!(stack.isEmpty() )) { System.out.print(stack.pop()); } System.out.println(); } }
Output
Enter decimal number: 999 Binary representation is:1111100111
Nguồn tham khảo
Java program to convert decimal to binary