Konversi int ke representasi string biner di Jawa?

168

Apa yang akan menjadi cara terbaik (idealnya, paling sederhana) untuk mengkonversi int ke representasi string biner di Jawa?

Sebagai contoh, katakanlah intnya adalah 156. Representasi string biner dari ini adalah "10011100".

Tyler Treat
sumber

Jawaban:

330
Integer.toBinaryString(int i)
Mendongkrak
sumber
Itu nyaman! Apakah ada metode yang serupa untuk jangka waktu lama?
Tyler Treat
46
@ ttreat31: Saya tidak bermaksud ini terdengar aneh, tetapi Anda benar-benar harus memiliki dokumentasi (dalam hal ini JavaDoc) siap sedia setiap kali Anda pemrograman. Anda tidak perlu bertanya: apakah metode mereka mirip untuk waktu yang lama; Anda harus mencarinya daripada mengetik komentar.
Lawrence Dol
5
@ Jack apakah ada cara untuk mendapatkan string biner dalam jumlah bit tetap seperti, biner desimal 8 in 8bit yang 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;
}
Ariel Badilla
sumber
20

Satu lagi cara- Dengan menggunakan java.lang.Integer Anda bisa mendapatkan representasi string dari argumen pertama idalam yang radix (Octal - 8, Hex - 16, Binary - 2)ditentukan oleh argumen kedua.

 Integer.toString(i, radix)

Contoh_

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

Keluaran_

Binary eqivalent of 100 = 1100100
Octal eqivalent of 100 = 144
Decimal eqivalent of 100 = 100
Hexadecimal eqivalent of 100 = 64
Rupesh Yadav
sumber
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));
    }
}
Artavazd Manukyan
sumber
Hasil biner = 0111 biner = 111
Artavazd Manukyan
1
String hexString = String.format ("% 2s", Integer.toHexString (h)). Ganti ('', '0');
Artavazd Manukyan
5

Ini adalah sesuatu yang saya tulis beberapa menit yang lalu hanya bermain-main. Semoga ini bisa membantu!

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

}

AbbyPaden
sumber
5

Konversi Integer ke Biner:

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

}

Keluaran:

Masukkan Integer:

10

Nomor Biner: 1010

Sidarth
sumber
Promosi berlebihan atas produk / sumber daya tertentu (yang saya hapus di sini) dapat dianggap oleh komunitas sebagai spam . Lihatlah pusat bantuan , khususnya Perilaku apa yang diharapkan dari pengguna? Bagian terakhir: Hindari promosi diri secara terbuka . Anda juga mungkin tertarik dalam Bagaimana cara beriklan di Stack Overflow? .
Tunaki
4

Menggunakan fungsi bawaan:

String binaryNum = Integer.toBinaryString(int num);

Jika Anda tidak ingin menggunakan fungsi bawaan untuk mengonversi int ke biner, Anda juga bisa melakukan ini:

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());        
    }
}
Rachit Srivastava
sumber
4

Pendekatan paling sederhana adalah memeriksa apakah angka itu ganjil. Jika itu, secara definisi, angka biner paling kanannya adalah "1" (2 ^ 0). Setelah kami menentukan ini, kami menggeser angka ke kanan dan memeriksa nilai yang sama menggunakan rekursi.

@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());
    }
}
wild_nothing
sumber
1
Ini, saya pikir, adalah cara yang sangat elegan untuk melakukannya secara manual, jika Anda benar-benar tidak ingin menggunakan metode bawaan.
praneetloke
4

di sini adalah metode saya, itu sedikit meyakinkan bahwa jumlah byte sudah diperbaiki

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;
}
Aleksey Timoshchenko
sumber
3

Menggunakan bit shift sedikit lebih cepat ...

public static String convertDecimalToBinary(int N) {

    StringBuilder binary = new StringBuilder(32);

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

    return binary.reverse().toString();

}
Eddie B
sumber
2

Ini dapat dinyatakan dalam pseudocode sebagai:

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
amoljdv06
sumber
1

Anda harus benar-benar menggunakan Integer.toBinaryString () (seperti yang ditunjukkan di atas), tetapi jika karena alasan tertentu Anda ingin sendiri:

// 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);
}
terlalu banyak berpikir
sumber
0

Ini seharusnya cukup sederhana dengan sesuatu seperti ini:

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();

}
Sandeep Saini
sumber
0

Anda juga dapat menggunakan loop sementara untuk mengubah int ke biner. Seperti ini,

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

Sumber dan referensi - konversi int ke biner dalam contoh java .

Siwa
sumber
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;
    }
}
Ahmed Saka
sumber