Een int converteren naar een binaire tekenreeksrepresentatie in Java?

Wat zou de beste manier zijn (idealiter de eenvoudigste) om een int om te zetten in een binaire tekenreeksrepresentatie in Java?

Stel bijvoorbeeld dat de int 156 is. De binaire tekenreeksrepresentatie hiervan zou “10011100” zijn.


Antwoord 1, autoriteit 100%

Integer.toBinaryString(int i)

Antwoord 2, autoriteit 11%

Er is ook de java.lang.Integer.toString(int i, int base)methode, die meer geschikt zou zijn als uw code op een dag andere basen dan 2 (binair) zou kunnen verwerken. Houd er rekening mee dat deze methode je alleen een niet-ondertekende weergave geeft van het gehele getal i, en als het negatief is, zal het op een negatief teken aan de voorkant plakken. Het zal geen twee-complement gebruiken.


Antwoord 3, autoriteit 8%

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

Antwoord 4, autoriteit 6%

Nog een manier: door java.lang.Integerje kunt een tekenreeksrepresentatie krijgen van het eerste argument iin de radix (Octal - 8, Hex - 16, Binary - 2)gespecificeerd door de tweede argument.

Integer.toString(i, radix)

Voorbeeld_

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

OutPut_

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

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

Antwoord 6

Dit is iets wat ik een paar minuten geleden schreef, gewoon aan het rommelen. Ik hoop dat het helpt!

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

}


Antwoord 7

Converteer getal naar binair:

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

output:

Voer integer in:

10

Binair nummer: 1010


Antwoord 8

Ingebouwde functie gebruiken:

String binaryNum = Integer.toBinaryString(int num);

Als u de ingebouwde functie voor het converteren van int naar binair niet wilt gebruiken, kunt u ook dit doen:

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

Antwoord 9

De eenvoudigste manier is om te controleren of het getal oneven is. Als dit het geval is, is het meest rechtse binaire getal per definitie “1” (2^0). Nadat we dit hebben bepaald, verschuiven we het getal naar rechts en controleren we dezelfde waarde met behulp van recursie.

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

Antwoord 10

hier zijn mijn methoden, het is een beetje overtuigen dat het aantal bytes vast

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

Antwoord 11

Het gebruik van bitverschuiving is iets sneller…

public static String convertDecimalToBinary(int N) {
    StringBuilder binary = new StringBuilder(32);
    while (N > 0 ) {
        binary.append( N % 2 );
        N >>= 1;
     }
    return binary.reverse().toString();
}

Antwoord 12

Dit kan in pseudocode worden uitgedrukt als:

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

Antwoord 13

Je moet echt gebruiken Integer.toBinaryString()(zoals hierboven weergegeven), maar als je om wat voor reden dan ook je eigen wilt:

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

Antwoord 14

Dit zou vrij eenvoudig moeten zijn met zoiets als dit:

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

Antwoord 15

public class BinaryConverter {
    public static String binaryConverter(int number) {
        String binary = "";
        if (number == 1){
            binary = "1";
            return binary;
        }
        if (number == 0){
            binary = "0";
            return binary;
        }
        if (number > 1) {
            String i = Integer.toString(number % 2);
            binary = binary + i;
            binaryConverter(number/2);
        }
        return binary;
    }
}

Antwoord 16

Je kunt de while-lus ook gebruiken om een int naar binair om te zetten. Vind dit leuk,

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

Bron en referentie – converteer int naar binair in javavoorbeeld.


Antwoord 17

Om het precies 8 bit te maken, heb ik een kleine toevoeging gedaan aan het antwoord van @sandeep-saini:

public static String intToBinary(int number){
        StringBuilder sb = new StringBuilder();
        if(number == 0)
            return "0";
        while(number>=1){
            sb.append(number%2);
            number = number / 2;
        }
        while (sb.length() < 8){
            sb.append("0");
        }
        return sb.reverse().toString();
    }

Dus nu krijg je voor een invoer van 1een uitvoer van 00000001

Other episodes