Как правильно конвертировать int в binary?

439
07 февраля 2017, 19:38

Есть несколько способов получить бинарное значение с int

вот один из коробки

Integer.toBinaryString(value);

Но этот метод возвращает значение в котором от 7 до 9 знаков, не пойму от чего это зависит

Я вот нашел подход как получить из int бинарное значение которое всегда возвращает 8 знаков

private static void printByte(int value) {
    String currentBinary = Integer.toBinaryString(256 + value);
    System.out.println(currentBinary.substring(currentBinary.length() - 8));
}
  1. Насколько я понимаю в бинарном значении должно быть 8 знаков, почему тогда в методе который предложен из коробки постоянно то 7 то 9 знаков и если нужно привести это к одному виду то нужно делать вот так как в примере выше
  2. Почему прибавляем 256, а не другое число? Я понимаю, что это максимальное значение для UInt но почему именно оно берется?

И в итоге все равно потом substing подрезает строку до нужной длины...

В общем все как то не ясно) Хочу понять как это работает, а не просто запомнить как факт.

Answer 1

Но этот метод возвращает значение в котором от 7 до 9 знаков, не пойму от чего это зависит

Метод Integer.toBinaryString(...) возвращает строковое представление переданного числа в двоичной форме без лидирующих нулей.

Например:

System.out.println(Integer.toBinaryString(1));
// вывод: 1
System.out.println(Integer.toBinaryString(2));
// вывод: 10
System.out.println(Integer.toBinaryString(16));
// вывод: 10000

По второму вопросу:

256 в десятичной системе счисления – это 1_0000_0000 в двоичной. Если к этому числу прибавить меньшее (по абсолютной величине) число, то ведущая единица останется на месте, следовательно, идущие после нее нули в строке гарантированно будут. Ну а потом строка обрезается до нужной длины.

Вообще говоря, приведенный метод работает некорректно, например:

System.out.println(Integer.toBinaryString(12345));
// вывод 11000000111001
printByte(12345);
// вывод 00111001

Добавить лидирующие нули, можно, например, так:

String s = String.format("%32s", Integer.toBinaryString(1)).replace(' ', '0');
READ ALSO
не отрабатывает шрифт в браузерах

не отрабатывает шрифт в браузерах

Написан вот такой код, использую бутстрап

409
Нужна помощь/совет в адаптивной верстке + owlcarousel

Нужна помощь/совет в адаптивной верстке + owlcarousel

Есть примерно такая структура сайта, поведение блоков примерно соответствует нужному результату, кроме последнего

428
Не работает slider [требует правки]

Не работает slider [требует правки]

codepenio скопировал исходники этого слайдшоу и не работает помогите разобраться

395