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

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

Ответы [ 19 ]

1 голос
/ 07 января 2019

Решение с использованием 32-битной маски отображения,

public static String toBinaryString(int n){

    StringBuilder res=new StringBuilder();
    //res= Integer.toBinaryString(n); or
    int displayMask=1<<31;
    for (int i=1;i<=32;i++){
        res.append((n & displayMask)==0?'0':'1');
        n=n<<1;
        if (i%8==0) res.append(' ');
    }

    return res.toString();
}


 System.out.println(BitUtil.toBinaryString(30));


O/P:
00000000 00000000 00000000 00011110 
1 голос
/ 01 сентября 2017

Здесь уже есть хорошие ответы на этот вопрос.Но именно так я и попробовал себя (и, может быть, это самая простая логическая схема → по модулю / делению / добавлению ):

        int decimalOrBinary = 345;
        StringBuilder builder = new StringBuilder();

        do {
            builder.append(decimalOrBinary % 2);
            decimalOrBinary = decimalOrBinary / 2;
        } while (decimalOrBinary > 0);

        System.out.println(builder.reverse().toString()); //prints 101011001
0 голосов
/ 24 февраля 2017
    for(int i = 1; i <= 256; i++)
    {
        System.out.print(i + " "); //show integer
        System.out.println(Integer.toBinaryString(i) + " "); //show binary
        System.out.print(Integer.toOctalString(i) + " "); //show octal
        System.out.print(Integer.toHexString(i) + " "); //show hex

    }
0 голосов
/ 12 мая 2016

Вопрос сложен в Java (и, вероятно, также на другом языке).

Целочисленный тип данных - 32-битный со знаком , но Integer.toBinaryString () возвращает строкупредставление целочисленного аргумента в виде целого числа без знака в базе 2.

Таким образом, Integer.parseInt (Integer.toBinaryString (X), 2) может генерировать исключение (со знаком и без знака).

Безопасный способ - использовать Integer.toString (X, 2);это создаст что-то менее элегантное:

-11110100110

Но это работает !!!

0 голосов
/ 20 августа 2016

Работает со значениями со знаком и без знака, использует мощные битовые манипуляции и генерирует первые нули слева.

public static String representDigits(int num) {

        int checkBit = 1 << (Integer.SIZE * 8 - 2 );    // avoid the first digit        
        StringBuffer sb = new StringBuffer();

        if (num < 0 ) {     // checking the first digit
            sb.append("1");
        } else {
            sb.append("0");
        }

        while(checkBit != 0) {          
            if ((num & checkBit) == checkBit){
                sb.append("1");
            } else {
                sb.append("0");
            }           
            checkBit >>= 1;     
        }       

        return sb.toString();
    }
0 голосов
/ 16 сентября 2018

Введите любое десятичное число в качестве ввода. После этого мы выполняем такие операции, как по модулю и делению, чтобы преобразовать заданный вход в двоичное число. Вот исходный код Java-программы для преобразования целочисленных значений в двоичные и число битов этого двоичного файла для его десятичного числа. Программа на Java успешно скомпилирована и запущена в системе Windows. Вывод программы также показан ниже.

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int integer ;
        String binary = "";    //   here we count "" or null 
                               //   just String binary = null;
        System.out.print("Enter the binary Number: ");
        integer = sc.nextInt();

        while(integer>0)
        {
            int x = integer % 2;
            binary = x + binary;
            integer = integer / 2;  
        }
        System.out.println("Your binary number is : "+binary);
        System.out.println("your binary length : " + binary.length());
    }
}
0 голосов
/ 23 апреля 2018

Двоичное представление заданного целого числа x с левыми дополненными нулями:

org.apache.commons.lang3.StringUtils.leftPad(Integer.toBinaryString(x), 32, '0')
0 голосов
/ 26 июня 2017

Попробуйте следующим образом:

public class Bin {
  public static void main(String[] args) {
    System.out.println(toBinary(0x94, 8));
  }

  public static String toBinary(int a, int bits) {
    if (--bits > 0)
        return toBinary(a>>1, bits)+((a&0x1)==0?"0":"1");
    else 
        return (a&0x1)==0?"0":"1";
  }

}

10010100

0 голосов
/ 09 февраля 2017

Я думаю, что это самый простой алгоритм (для тех, кто не хочет использовать встроенные функции):

public static String convertNumber(int a)  { 
              StringBuilder sb=new StringBuilder();
              sb.append(a & 1);
              while ((a>>=1) != 0)  { 
                  sb.append(a & 1);
               }
              sb.append("b0");
              return sb.reverse().toString();
  }

Пример:

convertNumber (1) -> "0b1"

convertNumber (5) -> "0b101"

convertNumber (117) -> "0b1110101"

Как это работает: while-цикл перемещает число вправо (замена последнего бита вторым-последним и т. Д.), Получает значение последнего бита и помещает его в StringBuilder, повторяет до тех пор, пока не останется битов (вот когда a = 0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...