Convert số thập phân sang nhị phân trong Java

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

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x