Java에서 int를 이진 문자열 표현으로 변환 하시겠습니까?


168

Java에서 int를 이진 문자열 표현으로 변환하는 가장 좋은 방법은 무엇입니까?

예를 들어, int가 156이라고 가정하십시오. 이진 문자열 표현은 "10011100"입니다.

답변:


330
Integer.toBinaryString(int i)

편리합니다! 오랫동안 비슷한 방법이 있습니까?
Tyler Treat

46
@ ttreat31 : 나는 이것이 소리가 들리는 것을 의미하지는 않지만 프로그래밍 할 때마다 문서 (이 경우 JavaDoc)를 쉽게 가져야합니다. 묻지 않아도됩니다. 오랫동안 비슷한 방법이 있습니다. 주석을 입력하는 것보다 찾아보아야합니다.
Lawrence Dol

5
@Jack은 8 비트 바이너리의 10 진수 8과 같은 고정 된 비트 수로 바이너리 문자열을 얻는 방법이 있습니다. 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

사용하여 더 방법 - 하나 java.lang.Integer의를 첫 번째 인수의 캐릭터 라인 표현을 얻을 수 iradix (Octal - 8, Hex - 16, Binary - 2)2 번째의 인수로 지정했습니다.

 Integer.toString(i, radix)

예_

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

산출_

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

결과 이진 = 0111 이진 = 111
Artavazd Manukyan

1
문자열 hexString = String.format ( "% 2s", 정수 .toHexString (h)). replace ( '', '0');
Artavazd Manukyan

5

이것은 몇 분 전에 쓴 것입니다. 그것이 도움이되기를 바랍니다!

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

정수를 이진수로 변환 :

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

}

산출:

정수 입력 :

10

이진수 : 1010


커뮤니티에서 특정 제품 / 리소스 (여기서 제거한)에 대한 과도한 홍보는 스팸 으로 인식 될 수 있습니다 . 도움말 센터를 살펴보십시오. 특히 사용자에게 어떤 행동이 예상됩니까? 마지막 섹션 : 명백한 자기 홍보를 피하십시오 . 스택 오버플로에 대한 광고어떻게합니까? .
Tunaki

4

내장 기능 사용 :

String binaryNum = Integer.toBinaryString(int num);

int를 이진으로 변환하기 위해 내장 함수를 사용하지 않으려면 다음을 수행하십시오.

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

가장 간단한 방법은 숫자가 홀수인지 확인하는 것입니다. 정의에 따르면 맨 오른쪽 이진수는 "1"(2 ^ 0)입니다. 이를 결정한 후 숫자를 오른쪽으로 비트 이동하고 재귀를 사용하여 동일한 값을 확인합니다.

@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
내장 메소드를 사용하고 싶지 않은 경우 수동으로 수행하는 정말 우아한 방법입니다.
praneetloke

4

여기 내 방법이 있습니다. 바이트 수가 고정되어 있음을 조금 확신합니다.

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

비트 시프트를 사용하는 것이 조금 더 빠릅니다.

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

이것은 의사 코드로 다음과 같이 표현 될 수 있습니다.

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

실제로 Integer.toBinaryString ()을 사용해야합니다 ( 위 그림 참조). 어떤 이유로 든 원하는 경우 :

// 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

이것은 다음과 같이 매우 간단해야합니다.

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

while 루프를 사용하여 int를 이진으로 변환 할 수 있습니다. 이렇게

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

소스 및 참조 -Java 예제 에서 int를 2 진으로 변환하십시오 .


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;
    }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.