Вывести целое число в двоичном формате на Java - PullRequest
242 голосов
/ 10 марта 2011

У меня есть номер, и я хочу напечатать его в двоичном виде.Я не хочу делать это, написав алгоритм. Есть ли встроенная функция для этого в Java?

Ответы [ 19 ]

392 голосов
/ 10 марта 2011

Предполагается, что вы имеете в виду "встроенный":

int x = 100;
System.out.println(Integer.toBinaryString(x));

См. Целочисленная документация .

(Long имеет аналогичный метод, BigInteger имеет метод экземпляра, в котором можно указать основание.)

234 голосов
/ 04 февраля 2014

Здесь нет необходимости зависеть только от двоичного или любого другого формата ... доступна одна гибкая встроенная функция, которая печатает любой формат, который вы хотите в вашей программе .. Integer.toString (int, представление);

Integer.toString(100,8) // prints 144 --octal representation

Integer.toString(100,2) // prints 1100100 --binary representation

Integer.toString(100,16) //prints 64 --Hex representation
56 голосов
/ 10 марта 2011
System.out.println(Integer.toBinaryString(343));
21 голосов
/ 26 июля 2015

Мне нужно было что-то, чтобы красиво распечатать вещи и разделить биты каждый n-бит.Другими словами, отобразить начальные нули и показать что-то вроде этого:

n = 5463
output = 0000 0000 0000 0000 0001 0101 0101 0111

Итак, вот что я написал:

/**
 * Converts an integer to a 32-bit binary string
 * @param number
 *      The number to convert
 * @param groupSize
 *      The number of bits in a group
 * @return
 *      The 32-bit long bit string
 */
public static String intToString(int number, int groupSize) {
    StringBuilder result = new StringBuilder();

    for(int i = 31; i >= 0 ; i--) {
        int mask = 1 << i;
        result.append((number & mask) != 0 ? "1" : "0");

        if (i % groupSize == 0)
            result.append(" ");
    }
    result.replace(result.length() - 1, result.length(), "");

    return result.toString();
}

Вызовите это так:

public static void main(String[] args) {
    System.out.println(intToString(5463, 4));
}
7 голосов
/ 13 ноября 2014

Старая школа:

    int value = 28;
    for(int i = 1, j = 0; i < 256; i = i << 1, j++)
        System.out.println(j + " " + ((value & i) > 0 ? 1 : 0));
5 голосов
/ 03 декабря 2014

проверить эту логику можно преобразовать число в любую базу

public static void toBase(int number, int base) {
    String binary = "";
    int temp = number/2+1;
    for (int j = 0; j < temp ; j++) {
        try {
            binary += "" + number % base;

            number /= base;
        } catch (Exception e) {
        }
    }
    for (int j = binary.length() - 1; j >= 0; j--) {
        System.out.print(binary.charAt(j));
    }
}

OR

StringBuilder binary = new StringBuilder();
int n=15;
while (n>0) {
    if((n&1)==1){
        binary.append(1);
    }else
        binary.append(0);
    n>>=1;
}
System.out.println(binary.reverse());
3 голосов
/ 18 апреля 2017

Это самый простой способ печати внутреннего двоичного представления целого числа. Например : Если мы возьмем n в качестве 17, то результат будет: 0000 0000 0000 0000 0000 0001 0001

void bitPattern(int n) {

        int mask = 1 << 31;
        int count = 0;
        while(mask != 0) {
            if(count%4 == 0)
                System.out.print(" ");

            if((mask&n) == 0) 

                System.out.print("0");



            else 
                System.out.print("1");


            count++;
            mask = mask >>> 1;


    }
    System.out.println();
}
3 голосов
/ 02 декабря 2018

Просто попробуйте.Если область видимости печатает только двоичные значения заданного целочисленного значения.Он может быть положительным или отрицательным.

    public static void printBinaryNumbers(int n) {
    char[] arr = Integer.toBinaryString(n).toCharArray();
    StringBuilder sb = new StringBuilder();
    for (Character c : arr) {
        sb.append(c);
    }
    System.out.println(sb);
}

вход

5

Выход

101

2 голосов
/ 04 октября 2018
public static void main(String[] args) 
{
    int i = 13;
    short s = 13;
    byte b = 13;

    System.out.println("i: " + String.format("%32s", 
            Integer.toBinaryString(i)).replaceAll(" ", "0"));
    System.out.println("s: " + String.format("%16s", 
            Integer.toBinaryString(0xFFFF & s)).replaceAll(" ", "0"));
    System.out.println("b: " + String.format("%8s", 
            Integer.toBinaryString(0xFFFFFF & b)).replaceAll(" ", "0"));

}

Выход:

i: 00000000000000000000000000001101
s: 0000000000001101
b: 00001101
1 голос
/ 05 апреля 2019

Простое и довольно простое решение.

public static String intToBinaryString(int integer, int numberOfBits) {

    if (numberOfBits > 0) {     // To prevent FormatFlagsConversionMismatchException.

        String nBits = String.format("%" + numberOfBits + "s",      // Int to bits conversion
                Integer.toBinaryString(integer))
                .replaceAll(" ","0"); 

        return nBits;   // returning the Bits for the given int.
    }

    return null;        // if the numberOfBits is not greater than 0, returning null.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...