Я хотел бы знать, какой из них — лучший способ работать с двоичными числами в java. Мне нужен способ создать массив двоичных чисел и выполнить с ними некоторые вычисления. Например, я хотел бы X или значения или умножить матрицу двоичных чисел.
Проблема решена: Большое спасибо за всю информацию.
Я думаю, что для моего случая я собираюсь использовать BitSet, упомянутый @Jarrod Roberson
Содержание
- 6 ответов
- Share this:
- Понравилось это:
- Похожее
- 5 thoughts on “Java из двоичной системы в десятичную и обратно”
6 ответов
36 ewok [2011-11-01 21:31:00]
В версии 7 для Java вы можете просто использовать двоичные числа, объявив ints и предшествующие вашим номерам с помощью 0b или 0b :
Что вы, вероятно, ищете, это класс BitSet .
Этот класс реализует вектор бит, который растет по мере необходимости. каждый компонент битового набора имеет логическое значение. Биты BitSet — это индексируется неотрицательными целыми числами. Отдельные индексированные биты могут быть проверять, устанавливать или очищать. Один BitSet может использоваться для изменения содержимое другого BitSet через логическое И, логическое включение ИЛИ, и логические операции исключающего ИЛИ.
По умолчанию все биты в наборе изначально имеют значение false.
Каждый бит имеет текущий размер, который представляет собой количество бит пространства в настоящее время используется бит. Обратите внимание, что размер связан с реализация битового набора, поэтому он может измениться с реализацией. длина набора бит относится к логической длине битового набора и является определяется независимо от реализации.
Если не указано иное, передавая нулевой параметр любому из методов в BitSet приведет к исключению NullPointerException.
2 Renato [2011-11-01 21:51:00]
Там разница между самим номером и это представление на языке. Например, «0xD» (основание 16), «13» (радиус 10), «015» (основание 8) и «b1101» (основание 2) — четыре различные представления, относящиеся к одному и тому же числу.
Тем не менее, вы можете использовать примитивный тип данных «int» на языке Java для представления любого двоичного числа (а также любого числа в любом radix), но только в Java 7 вы можете использовать двоичный литерал, поскольку вы ранее могли использовать восьмеричные (0) и hexa (0x) литералы для представления этих чисел, если я правильно понял ваш вопрос.
например, для 1, 2, 128, 256 вывод может быть (16 цифр):
ставит пробелы для заполнения слева:
Как поставить 0 для заполнения. Я не мог найти это в Formatter. Есть ли другой способ сделать это?
PS этот пост описывает, как форматировать целые числа с левым 0-отступом, но это не для двоичного представления.
Я думаю, что это субоптимальное решение, но вы могли бы сделать
В java.util.Formatter нет двоичного преобразования, я бы посоветовал либо использовать String.replace, чтобы заменить символ пробела нулями, как в:
Или реализуйте свою собственную логику, чтобы преобразовать целые числа в двоичное представление с добавленным левым дополнением где-то вдоль строк, указанных в этом. Или, если вам действительно нужно передавать числа в формат, вы можете преобразовать свое двоичное представление в BigInteger, а затем отформатировать его с ведущими нулями, но это очень дорого во время выполнения, например:
Вы можете использовать Apache Commons StringUtils. Он предлагает методы для заполнения строк:
Я пробовал всевозможные вызовы методов, которые я раньше не использовал, чтобы сделать эту работу, они работали с умеренным успехом, пока я не подумал о том, что так просто, что это может сработать, и это было!
Я уверен, что об этом думали раньше, не уверен, что это хорошо для длинной строки двоичных кодов, но отлично работает для строк 16 бит. Надеюсь, поможет!! (Обратите внимание, что вторая часть кода улучшена)
Спасибо Will за то, что он помог улучшить этот ответ, чтобы он работал вне цикла. Это может быть немного неуклюжий, но он работает, пожалуйста, улучшите и прокомментируйте, если сможете.
Вот новый ответ для старого сообщения.
Чтобы поместить двоичное значение с ведущими нулями на определенную длину, попробуйте следующее:
Если len = 4 и val = 1 ,
возвращает строку «10001» , затем
отбрасывает самый первый символ. Итак, мы получаем то, что хотим:
Если val скорее всего будет отрицательным, попробуйте:
Site about Java
16 Четверг Янв 2014
Java из двоичной системы в десятичную и обратно
Раньше, чтобы переводить числа из одной системы счисления в другую я писал методы с циклами и т.п.
Нужно делать так:
Вывод на консоль:
11101000
232
Также есть перевод в восьмиричную систему ( метод toOctalString) и шестнадцатиричную ( метод toHexString)
Share this:
Понравилось это:
Похожее
5 thoughts on “Java из двоичной системы в десятичную и обратно”
Duke Nukem said:
можно запулить одномерный динамичексий массив строковых двоичных типа: String massive[] = new значений и из него доставать так же как ты щас замутил через принт, ток массив(переменная со значением).
Duke Nukem said:
хотя чет я о своем, заработался. у тебя эффективнее с методом класса=)))
Кстати, классно что есть методы toOctalString — перевод в восьмиричную систему и toHexString (шетнадцатиричная) работа с которыми абсолютна аналогична.
Источник: