Bir int'i Java'daki ikili dize gösterimine dönüştürme?


168

Bir int'i Java'da ikili dize gösterimine dönüştürmenin en iyi yolu (ideal olarak, en basit) ne olurdu?

Örneğin, int, 156'dır. Bunun ikili dize temsili "10011100" olur.

Yanıtlar:


330
Integer.toBinaryString(int i)

Bu uygun! Uzun ürünler için benzer bir yöntem var mı?
Tyler Treat

46
@ ttreat31: Bunu sersemlemiş gibi görmüyorum demek istemiyorum, ama programlarken her zaman hazır bulunan belgelere (bu durumda JavaDoc) sahip olmalısınız. Sormak zorunda kalmamalısınız: uzun süreler için benzer bir yöntemdir; yorum yazmanızdan daha fazla bakmanız gerekir.
Lawrence Dol

5
@ Jack, 8 bit ikili ondalık 8 gibi sabit sayıda bit ikili dize elde etmek için bir yol var hangi 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

Kullanarak daha yol-One java.lang.Integer ilk argüman dize temsilini alabilirsiniz iyılında radix (Octal - 8, Hex - 16, Binary - 2)ikinci argüman tarafından belirtilen.

 Integer.toString(i, radix)

Misal_

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

Çıktı_

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

Sonuçlar ikili = 0111 ikili = 111
Artavazd Manukyan

1
String hexString = String.format ("% 2s", Integer.toHexString (h)). Replace ('', '0');
Artavazd Manukyan

5

Bu, birkaç dakika önce yazdığım bir şey. Umarım yardımcı olur!

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

Tamsayı İkiliye Dönüştür:

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

}

Çıktı:

Tamsayı Girin:

10

İkili Numarası: 1010


Belirli bir ürünün / kaynağın (burada kaldırdığım) aşırı tanıtımı topluluk tarafından spam olarak algılanabilir . Yardım merkezine göz atın , özellikle kullanıcılardan ne tür bir davranış beklenir? 'nin son bölümü: Açıkça kendini tanıtmaktan kaçının . Ayrıca ilginizi çekebilir Yığın taşması nasıl reklam verebilirim ? .
Tunaki

4

Yerleşik işlevi kullanma:

String binaryNum = Integer.toBinaryString(int num);

İnt işlevini binary'ye dönüştürmek için yerleşik işlevi kullanmak istemiyorsanız, bunu da yapabilirsiniz:

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

En basit yaklaşım, sayının garip olup olmadığını kontrol etmektir. Tanım olarak, en sağdaki ikili sayı "1" (2 ^ 0) olacaktır. Bunu belirledikten sonra, numarayı sağa kaydırırız ve özyineleme kullanarak aynı değeri kontrol ederiz.

@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
Bu, bence, yerleşik yöntemleri kullanmak istemiyorsanız manuel olarak yapmanın gerçekten zarif bir yoludur.
praneetloke

4

işte benim yöntemlerim, bayt sayısının giderildiğine ikna etmek

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

Bit kaydırmayı kullanmak biraz daha hızlı ...

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

Bu sözde kodda şu şekilde ifade edilebilir:

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 () işlevini ( yukarıda gösterildiği gibi) gerçekten kullanmalısınız , ancak herhangi bir nedenle kendinize ait bir şey istiyorsanız:

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

Bunun gibi bir şeyle oldukça basit olması gerekir:

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

Bir int'i ikiliye dönüştürmek için while döngüsü de kullanabilirsiniz. Bunun gibi,

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

Kaynak ve başvuru - java örneğinde int'i ikiliye dönüştürün .


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;
    }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.