Работа с двоичными числами в java
Я хотел бы знать, какой из них - лучший способ работать с двоичными числами в java.
Мне нужен способ создать массив двоичных чисел и выполнить с ними некоторые вычисления.
Например, я хотел бы X или значения или умножить матрицу двоичных чисел.
Проблема решена:
Большое спасибо за всю информацию.
Я думаю, что для моего случая я собираюсь использовать BitSet, упомянутый @Jarrod Roberson
Ответы
Ответ 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) литералы для представления этих чисел, если я правильно понял ваш вопрос.
Ответ 4
В Java 7 двоичная поддержка лучше.
Смотрите эту ссылку: http://docs.oracle.com/javase/7/docs/technotes/guides/language/binary-literals.html
Ответ 5
Я никогда не видел компьютер, который использует ничего, кроме двоичных чисел.
Оператор XOR в Java ^
. Например, 5 ^ 3 = 6. Радиус по умолчанию для большинства преобразований число-строка составляет 10, но существует несколько методов, которые позволяют указать другую базу, например 2:
System.out.println(Integer.toString(5 ^ 3, 2));
Если вы используете Java 7, вы можете использовать бинарные литералы в своем исходном коде (в дополнение к десятичной, шестнадцатеричной и восьмеричной формам, которые ранее поддерживались).
Ответ 6
Вы можете хранить их как массивы byte
, а затем обращаться к битам отдельно. Затем к XOR их вы можете просто XOR байтов (это побитовая операция).
Конечно, он не должен быть байтовым массивом (может быть массивом типов int
или тем, что вы хотите), поскольку в конце все хранится в двоичном формате.