Подтвердить что ты не робот

Работа с двоичными числами в java

Я хотел бы знать, какой из них - лучший способ работать с двоичными числами в java. Мне нужен способ создать массив двоичных чисел и выполнить с ними некоторые вычисления. Например, я хотел бы X или значения или умножить матрицу двоичных чисел.

Проблема решена: Большое спасибо за всю информацию.

Я думаю, что для моего случая я собираюсь использовать BitSet, упомянутый @Jarrod Roberson

4b9b3361

Ответ 1

В версии 7 для Java вы можете просто использовать двоичные числа, объявив ints и предшествующие вашим номерам с помощью 0b или 0b:

int x=0b101;
int y=0b110;
int z=x+y;

System.out.println(x + "+" + y + "=" + z);
//5+6=11

/*
* If you want to output in binary format, use Integer.toBinaryString()
*/

System.out.println(Integer.toBinaryString(x) + "+" + Integer.toBinaryString(y)
         + "=" + Integer.toBinaryString(z));
//101+110=1011

Ответ 2

Что вы, вероятно, ищете, это класс BitSet.

Этот класс реализует вектор бит, который растет по мере необходимости. каждый компонент битового набора имеет логическое значение. Биты BitSet - это индексируется неотрицательными целыми числами. Отдельные индексированные биты могут быть проверять, устанавливать или очищать. Один BitSet может использоваться для изменения содержимое другого BitSet через логическое И, логическое включение ИЛИ, и логические операции исключающего ИЛИ.

По умолчанию все биты в наборе изначально имеют значение false.

Каждый бит имеет текущий размер, который представляет собой количество бит пространства в настоящее время используется бит. Обратите внимание, что размер связан с реализация битового набора, поэтому он может измениться с реализацией. длина набора бит относится к логической длине битового набора и является определяется независимо от реализации.

Если не указано иное, передавая нулевой параметр любому из методов в BitSet приведет к исключению NullPointerException.

Ответ 3

Там разница между самим номером и это представление на языке. Например, "0xD" (основание 16), "13" (радиус 10), "015" (основание 8) и "b1101" (основание 2) - четыре различные представления, относящиеся к одному и тому же числу.

Тем не менее, вы можете использовать примитивный тип данных "int" на языке Java для представления любого двоичного числа (а также любого числа в любом radix), но только в Java 7 вы можете использовать двоичный литерал, поскольку вы ранее могли использовать восьмеричные (0) и hexa (0x) литералы для представления этих чисел, если я правильно понял ваш вопрос.

Ответ 5

Я никогда не видел компьютер, который использует ничего, кроме двоичных чисел.

Оператор XOR в Java ^. Например, 5 ^ 3 = 6. Радиус по умолчанию для большинства преобразований число-строка составляет 10, но существует несколько методов, которые позволяют указать другую базу, например 2:

System.out.println(Integer.toString(5 ^ 3, 2));

Если вы используете Java 7, вы можете использовать бинарные литералы в своем исходном коде (в дополнение к десятичной, шестнадцатеричной и восьмеричной формам, которые ранее поддерживались).

Ответ 6

Вы можете хранить их как массивы byte, а затем обращаться к битам отдельно. Затем к XOR их вы можете просто XOR байтов (это побитовая операция).

Конечно, он не должен быть байтовым массивом (может быть массивом типов int или тем, что вы хотите), поскольку в конце все хранится в двоичном формате.