Chuyển đổi một int thành một biểu diễn chuỗi nhị phân trong Java?


168

Điều gì sẽ là cách tốt nhất (lý tưởng nhất, đơn giản nhất) để chuyển đổi một int thành biểu diễn chuỗi nhị phân trong Java?

Ví dụ: giả sử int là 156. Biểu diễn chuỗi nhị phân của giá trị này sẽ là "10011100".

Câu trả lời:


330
Integer.toBinaryString(int i)

Thật tiện lợi! Có một phương pháp tương tự cho lâu dài?
Tyler Treat

46
@ ttreat31: Tôi không có ý này nghe có vẻ lén lút, nhưng bạn thực sự nên có tài liệu (trong trường hợp này là JavaDoc) sẵn sàng bất cứ khi nào bạn đang lập trình. Bạn không cần phải hỏi: là một phương pháp tương tự của họ trong thời gian dài; bạn nên tìm kiếm nó hơn là gõ bình luận.
Lawrence Dol

5
@Jack có cách để có được chuỗi nhị phân trong một số bit cố định như, số thập phân 8 trong nhị phân 8 bit mà 00001000
Kasun Siyambalapitiya


26
public static string intToBinary(int n)
{
    string s = "";
    while (n > 0)
    {
        s =  ( (n % 2 ) == 0 ? "0" : "1") +s;
        n = n / 2;
    }
    return s;
}

20

Một gì theo cách hơn Bằng cách sử dụng java.lang.Integer bạn có thể nhận chuỗi đại diện của đối số đầu tiên itrong radix (Octal - 8, Hex - 16, Binary - 2)quy định bởi đối số thứ hai.

 Integer.toString(i, radix)

Thí dụ_

private void getStrtingRadix() {
        // TODO Auto-generated method stub
         /* returns the string representation of the 
          unsigned integer in concern radix*/
         System.out.println("Binary eqivalent of 100 = " + Integer.toString(100, 2));
         System.out.println("Octal eqivalent of 100 = " + Integer.toString(100, 8));
         System.out.println("Decimal eqivalent of 100 = " + Integer.toString(100, 10));
         System.out.println("Hexadecimal eqivalent of 100 = " + Integer.toString(100, 16));
    }

Ra ngoài

Binary eqivalent of 100 = 1100100
Octal eqivalent of 100 = 144
Decimal eqivalent of 100 = 100
Hexadecimal eqivalent of 100 = 64

5
public class Main  {

   public static String toBinary(int n, int l ) throws Exception {
       double pow =  Math.pow(2, l);
       StringBuilder binary = new StringBuilder();
        if ( pow < n ) {
            throw new Exception("The length must be big from number ");
        }
       int shift = l- 1;
       for (; shift >= 0 ; shift--) {
           int bit = (n >> shift) & 1;
           if (bit == 1) {
               binary.append("1");
           } else {
               binary.append("0");
           }
       }
       return binary.toString();
   }

    public static void main(String[] args) throws Exception {
        System.out.println(" binary = " + toBinary(7, 4));
        System.out.println(" binary = " + Integer.toString(7,2));
    }
}

Kết quả nhị phân = 0111 nhị phân = 111
Artavazd Manukyan

1
Chuỗi hexString = String.format ("% 2s", Integer.toHexString (h)). Thay thế ('', '0');
Artavazd Manukyan

5

Đây là một cái gì đó tôi đã viết một vài phút trước đây chỉ loay hoay. Hy vọng nó giúp!

public class Main {

public static void main(String[] args) {

    ArrayList<Integer> powers = new ArrayList<Integer>();
    ArrayList<Integer> binaryStore = new ArrayList<Integer>();

    powers.add(128);
    powers.add(64);
    powers.add(32);
    powers.add(16);
    powers.add(8);
    powers.add(4);
    powers.add(2);
    powers.add(1);

    Scanner sc = new Scanner(System.in);
    System.out.println("Welcome to Paden9000 binary converter. Please enter an integer you wish to convert: ");
    int input = sc.nextInt();
    int printableInput = input;

    for (int i : powers) {
        if (input < i) {
            binaryStore.add(0);     
        } else {
            input = input - i;
            binaryStore.add(1);             
        }           
    }

    String newString= binaryStore.toString();
    String finalOutput = newString.replace("[", "")
            .replace(" ", "")
            .replace("]", "")
            .replace(",", "");

    System.out.println("Integer value: " + printableInput + "\nBinary value: " + finalOutput);
    sc.close();
}   

}


5

Chuyển đổi số nguyên sang nhị phân:

import java.util.Scanner;

public class IntegerToBinary {

    public static void main(String[] args) {

        Scanner input = new Scanner( System.in );

        System.out.println("Enter Integer: ");
        String integerString =input.nextLine();

        System.out.println("Binary Number: "+Integer.toBinaryString(Integer.parseInt(integerString)));
    }

}

Đầu ra:

Nhập số nguyên:

10

Số nhị phân: 1010


Quảng cáo quá mức một sản phẩm / tài nguyên cụ thể (mà tôi đã xóa ở đây) có thể bị cộng đồng coi là thư rác . Hãy xem trung tâm trợ giúp , đặc biệt Loại hành vi nào được người dùng mong đợi? Phần cuối cùng: Tránh tự quảng cáo quá mức . Bạn cũng có thể quan tâm Làm thế nào để tôi quảng cáo trên Stack Overflow? .
Tunaki

4

Sử dụng chức năng tích hợp:

String binaryNum = Integer.toBinaryString(int num);

Nếu bạn không muốn sử dụng hàm dựng sẵn để chuyển đổi int thành nhị phân thì bạn cũng có thể làm điều này:

import java.util.*;
public class IntToBinary {
    public static void main(String[] args) {
        Scanner d = new Scanner(System.in);
        int n;
        n = d.nextInt();
        StringBuilder sb = new StringBuilder();
        while(n > 0){
        int r = n%2;
        sb.append(r);
        n = n/2;
        }
        System.out.println(sb.reverse());        
    }
}

4

Cách tiếp cận đơn giản nhất là kiểm tra xem số đó có phải là số lẻ hay không. Nếu theo định nghĩa, số nhị phân bên phải nhất của nó sẽ là "1" (2 ^ 0). Sau khi xác định được điều này, chúng tôi sẽ dịch chuyển số sang phải và kiểm tra cùng một giá trị bằng cách sử dụng đệ quy.

@Test
public void shouldPrintBinary() {
    StringBuilder sb = new StringBuilder();
    convert(1234, sb);
}

private void convert(int n, StringBuilder sb) {

    if (n > 0) {
        sb.append(n % 2);
        convert(n >> 1, sb);
    } else {
        System.out.println(sb.reverse().toString());
    }
}

1
Tôi nghĩ, đây là một cách thực sự tao nhã để thực hiện thủ công, nếu bạn thực sự không muốn sử dụng các phương thức tích hợp.
praneetloke

4

Đây là phương thức của tôi, một chút thuyết phục rằng số byte đã được sửa

private void printByte(int value) {
String currentBinary = Integer.toBinaryString(256 + value);
System.out.println(currentBinary.substring(currentBinary.length() - 8));
}

public int binaryToInteger(String binary) {
char[] numbers = binary.toCharArray();
int result = 0;
for(int i=numbers.length - 1; i>=0; i--)
  if(numbers[i]=='1')
    result += Math.pow(2, (numbers.length-i - 1));
return result;
}

3

Sử dụng dịch chuyển bit nhanh hơn một chút ...

public static String convertDecimalToBinary(int N) {

    StringBuilder binary = new StringBuilder(32);

    while (N > 0 ) {
        binary.append( N % 2 );
        N >>= 1;
     }

    return binary.reverse().toString();

}

2

Điều này có thể được thể hiện bằng mã giả như:

while(n > 0):
    remainder = n%2;
    n = n/2;
    Insert remainder to front of a list or push onto a stack

Print list or stack

1

Bạn thực sự nên sử dụng Integer.toBinaryString () (như được hiển thị ở trên), nhưng nếu vì lý do nào đó bạn muốn của riêng mình:

// Like Integer.toBinaryString, but always returns 32 chars
public static String asBitString(int value) {
  final char[] buf = new char[32];
  for (int i = 31; i >= 0; i--) {
    buf[31 - i] = ((1 << i) & value) == 0 ? '0' : '1';
  }
  return new String(buf);
}

0

Điều này khá đơn giản với một cái gì đó như thế này:

public static String toBinary(int number){
    StringBuilder sb = new StringBuilder();

    if(number == 0)
        return "0";
    while(number>=1){
        sb.append(number%2);
        number = number / 2;
    }

    return sb.reverse().toString();

}

0

Bạn cũng có thể sử dụng vòng lặp while để chuyển đổi int thành nhị phân. Như thế này,

import java.util.Scanner;

public class IntegerToBinary
{
   public static void main(String[] args)
   {
      int num;
      String str = "";
      Scanner sc = new Scanner(System.in);
      System.out.print("Please enter the a number : ");
      num = sc.nextInt();
      while(num > 0)
      {
         int y = num % 2;
         str = y + str;
         num = num / 2;
      }
      System.out.println("The binary conversion is : " + str);
      sc.close();
   }
}

Nguồn và tham chiếu - chuyển đổi int thành nhị phân trong ví dụ java .


0
public class BinaryConverter {

    public static String binaryConverter(int number) {
        String binary = "";
        if (number == 1){
            binary = "1";
            System.out.print(binary);
            return binary;
        }
        if (number == 0){
            binary = "0";
            System.out.print(binary);
            return binary;
        }
        if (number > 1) {
            String i = Integer.toString(number % 2);

            binary = binary + i;
            binaryConverter(number/2);
        }
        System.out.print(binary);
        return binary;
    }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.