Массив двоичных чисел java

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

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

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

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

6 ответов

В Java выпуск 7 вы можете просто использовать двоичные числа, объявив целые числа и поставив перед ними числа 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) + " text-center">
55
Источник Поделиться
2011-11-01 18:31

То, что вы, вероятно, ищете, это BitSet учебный класс.

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

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

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

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

17
Источник Поделиться
2011-11-01 18:35

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

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

3
Источник Поделиться
2011-11-01 18:51

В Java 7 бинарная поддержка лучше.

Смотрите эту ссылку: http://docs.oracle.com/javase/7/docs/technotes/guides/language/binary-literals.html

1
Источник Поделиться
2013-02-13 02:25

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

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

0
Источник Поделиться
2011-11-01 18:31

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

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

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

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

Источник

Работа с двоичными числами в 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) + " post-104 post type-post status-publish format-standard has-post-thumbnail hentry category-uncategorized"> 

Ответ 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 или тем, что вы хотите), поскольку в конце все хранится в двоичном формате.

Источник

Пример программы бинарного (двоичного) поиска на Java

Пример программы бинарного (двоичного) поиска на Java

Продолжаю наполнять раздел для начинающих Java программистов полезными статьями. На этот раз мы рассмотрим пример программы бинарного (двоичного) поиска на Java. Известно, что в Java есть стандартный класс java.util.Arrays , в котором уже реализованы разные вариации бинарного поиска binarySearch() , но в этой статье мы напишем свою реализацию этого алгоритма на Java.

Кратко о бинарном поиске

Бинарный или двоичный поиск является одним из классических алгоритмов поиска элементов в отсортированном списке или массиве чисел. Поиск происходит путем деления элементов массива на половины.

Ниже представлена программа, реализующая алгоритм двоичного поиска. Размер и элементы массива будут вводиться пользователем.

System . out . println ( "Элемент не найден в массиве. Метод бинарного поиска закончил работу после "

Результат выполнения программы бинарного (двоичного) поиска на Java:

Результат неудачного выполнения бинарного поиска:

Вот такая простая программа для демонстрации работы двоичного поиска на Java. Следите за обновлениями раздела Начало работы и читайте еще больше статей по Java для начинающих.

Больше полезных статей!

3 thoughts to “Пример программы бинарного (двоичного) поиска на Java”

Я начинающий программист — вопрос следующего характера, не ругайте, если что не так. Кажется в коде, что то упущено, что то вроде Arrays.sort либо иной реализации сортировки.
Перед бинарным поиском разве массив не должен быть сначала упорядочен?
Код выглядит нерабочим, результат успешности поиска случаен, зависит от того как пользователь ввел данные. Допустим для последовательности i…j,k, где i…j числа по возрастанию, а k И судя по пункту Результат выполнения программы бинарного (двоичного) поиска на Java: в вашем уроке
результат 16 был успешно найден, но на позиции 4, хотя он введен 2м, массив все же скорее всего был упорядочен по убыванию, что не отражено в коде(к тому же код примера на приведенных входных данных не работает).

Вы совершенно правы, я упустил этот момент. Обновил статью с пояснениями и вынес бинарный поиск в отдельный метод. Спасибо за комментарий, Вы помогли развитию сайта.

Решение получилось внешне не только рабочим, но на мой взгляд и более изящным(операции сравнения в данном варианте лучше реализованы). Вот только в Output «16 является 4 элементом в массиве», оно будет при данной сортировке(по возрастанию) 2м, а 4 м оно будет при сортировке по убыванию — Arrays.sort(array, Collections.reverseOrder()). Но тогда придется сначала в массиве примитивы int «обернуть» в класс Integer.

Источник

Читайте также:  Change the Background Color with JavaScript
Оцените статью