Преобразование целых чисел в бинарные Java с нулевым заполнением
Быстрый ответ
Если вам нужно составить 32-битное двоичное представление числа с оглавляющими нулями, использовать можно метод String.format()
:
int number = 42; // ведь 42 – это олицетворение вселенной и нашей жизни
String binaryString = String.format("%032d", Long.parseLong(Integer.toBinaryString(number)));
System.out.println(binaryString); // Результат: "00000000000000000000000000101010"
Где 32
— это общее количество символов, которое вы стремитесь получить, так что заместо 32
вы можете подставить любое другое число.
"Когда" и "почему" стоит применять другие методы
Хоть и String.format()
идеально подходит для получения строки заданной длины, существуют и другие подходы со своими особенностями.
При работе с отрицательными числами удобно использовать комбинацию операций |
и <<
:
int len = 16;
int val = -42;
String formattedBinary = Integer.toBinaryString((1 << len) | val).substring(1);
System.out.println(formattedBinary); // Результат: "1111111111101010"
Когда эффективность добавления нулей играет важную роль, возьмите StringUtils.leftPad()
из Apache Commons Lang:
String binaryString = Integer.toBinaryString(42);
String paddedBinary = StringUtils.leftPad(binaryString, 16, '0');
System.out.println(paddedBinary); // Результат: "00000000101010"
Если вы предпочитаете не использовать сторонние библиотеки, создайте свой метод заполнения, используя для этого циклы или Arrays.fill()
:
char[] paddingArray = new char[42];
Arrays.fill(paddingArray, '0');
System.arraycopy(Integer.toBinaryString(42).toCharArray(), 0, paddingArray, 42 – Integer.toBinaryString(42).length(), Integer.toBinaryString(42).length());
String paddedBinary = new String(paddingArray);
System.out.println(paddedBinary); // Результат: "00000000000000000000000000101010"
Помните о необходимости проверять длину исходной строки, чтобы предотвратить получение строки большей длины, чем требуется.
Визуализация
Визуализация процесса облегчает понимание в кодировании, давайте взглянем:
Десятичное представление: **42**
int num = 42;
String binaryString = String.format("%8s", Integer.toBinaryString(num)).replace(' ', '0');
Двоичное представление числа **42**: "00101010"
Разъяснение двоичного представления:
- Исходное число в двоичной форме: `101010`
- Стремимся к длине: 8 бит
- Результат добавления нулей: `00101010`
Так выглядит "Жизнь, Вселенная и Все Остальное" в виде 8-битного числа.
Повышаем компетенции в работе с побитовыми операциями
Побитовые операции — это мощный инструмент для выполнения нестандартных задач.
Желаете работать с отрицательными числами? Примените выражение (1 << len) | (val & ((1 << len) – 1))
, чтобы сохранить корректный знак числа.
Операция маскирования (val & ((1 << len) – 1))
обрезает число до нужной длины, пропуская лишь len
бит.
Для работы с динамической длиной просто сдвиньте 1
на len
бит влево, формируя строку из единиц, и вы будете готовы к техникам заполнения.
Полезные материалы
- Integer (Java Platform SE 7) – официальная документация Oracle по методу
toBinaryString
. - java – Как разместить нули перед целым числом? – Stack Overflow – обсуждение методов дополнения двоичных чисел нулями.
- Formatter (Java Platform SE 7) – документация по применению класса Formatter в Java.
- Java Integer toBinaryString() method with Examples – Javatpoint – примеры применения метода
toBinaryString
. - Примеры форматирования строк в Java: Издание 2021 – DZone – подробное руководство по форматированию строк в Java.