Я хотел бы знать, какой из них — лучший способ работать с двоичными числами в java. Мне нужен способ создать массив двоичных чисел и выполнить с ними некоторые вычисления. Например, я хотел бы X или значения или умножить матрицу двоичных чисел.
Проблема решена: Большое спасибо за всю информацию.
Я думаю, что для моего случая я собираюсь использовать BitSet, упомянутый @Jarrod Roberson
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) литералы для представления этих чисел, если я правильно понял ваш вопрос.
У меня есть номер, и я хочу напечатать его в двоичном виде. Я не хочу делать это, написав алгоритм. Есть ли встроенная функция для этого в Java?
17 ответов
Предполагая, что вы имеете в виду «встроенный»:
(У Long есть похожий метод, у BigInteger есть метод экземпляра, где вы можете указать основание.)
Здесь нет необходимости зависеть только от двоичного или любого другого формата . доступна одна гибкая встроенная функция, которая печатает любой формат, который вы хотите в вашей программе .. Integer.toString (int, presentation);
Мне нужно было что-то, чтобы красиво распечатать вещи и разделить биты каждый n-бит. Другими словами, отобразить начальные нули и показать что-то вроде этого:
Итак, вот что я написал:
Вызовите это так:
проверить эту логику можно преобразовать число в любую базу
ИЛИ ЖЕ
Это самый простой способ печати внутреннего двоичного представления целого числа. Например : если мы возьмем n как 17, то результат будет: 0000 0000 0000 0000 0000 0001 0001
Здесь уже есть хорошие ответы на этот вопрос. Но я попробовал именно так (и, может быть, это самая простая логика на основе → по модулю / делить / добавить ):
Вопрос сложен в Java (и, вероятно, также на другом языке).
Integer — это 32-разрядный тип данных со знаком, но Integer.toBinaryString () возвращает строковое представление целочисленного аргумента в виде целого числа без знака в базе 2.
Таким образом, Integer.parseInt (Integer.toBinaryString (X), 2) может генерировать исключение (со знаком или без знака).
Безопасный способ — использовать Integer.toString (X, 2); это создаст что-то менее элегантное:
Но это работает .
Я думаю, что это самый простой алгоритм (для тех, кто не хочет использовать встроенные функции):
convertNumber (1) -> «0b1»
convertNumber (5) -> «0b101»
convertNumber (117) -> «0b1110101»
Как это работает: while-цикл перемещает число вправо (заменяя последний бит на второй-последний и т. Д.), Получает значение последнего бита и помещает его в StringBuilder, повторяет до тех пор, пока не останется ни одного бита (вот когда а = 0).
Site about Java
16 Четверг Янв 2014
Java из двоичной системы в десятичную и обратно
Раньше, чтобы переводить числа из одной системы счисления в другую я писал методы с циклами и т.п.
Нужно делать так:
Вывод на консоль:
11101000
232
Также есть перевод в восьмиричную систему ( метод toOctalString) и шестнадцатиричную ( метод toHexString)
Share this:
Понравилось это:
Похожее
5 thoughts on “Java из двоичной системы в десятичную и обратно”
Duke Nukem said:
можно запулить одномерный динамичексий массив строковых двоичных типа: String massive[] = new <«0000», «0001» и т.д. ток динамическим боком >значений и из него доставать так же как ты щас замутил через принт, ток массив(переменная со значением).
Duke Nukem said:
хотя чет я о своем, заработался. у тебя эффективнее с методом класса=)))
Кстати, классно что есть методы toOctalString — перевод в восьмиричную систему и toHexString (шетнадцатиричная) работа с которыми абсолютна аналогична.