Я пытаюсь сгенерировать все возможные бинарные комбинации для двух байтов ex.Создание всех возможных двоичных комбинаций
00000000 00000001 00000000 00000010 00000000 00000011
У меня есть класс, который я работаю, но его явно не работает вообще. Я не могу получить метод для возврата результата по мере его создания.
Я получил код ниже для правильной работы, но только для расчета 1 байт. Как бы это изменить, чтобы рассчитать все возможные результаты для 2 байтов?
package referenceCode;public class BinaryGenerator {
private int val = 0; private int[] values = new int[]{0,1}; //This method converts the Binary Pattern output into a char[] so that it can be printed out to a file public int[] binaryPatternToString() { int numBits = 8; values[0] = 0; values[1] = 1; int[] returned = null; for (int i = 1; i < numBits; i++) { returned = binaryGenerator(i); for (int j = 1; j < numBits; j++) { } } return returned; } private int[] binaryGenerator(int iVal) { int[] moreValues = new int[values.length * 2]; int start = (int)Math.pow(2, iVal); for (int j = 0; j < values.length; j++) { moreValues[j * 2] = values[j] << 1; moreValues[j * 2 + 1] = values[j] << 1 | 1; } values = moreValues; for (int value : values) { System.out.println(Integer.toBinaryString(value)); } return moreValues; }}
Будет ли это быть лучшей идеей или более эффективным, чтобы сделать это рекурсивный метод вместо метода с цикл?
Во-первых, начните сначала. Спросите себя: «Какого результата я ожидаю?». Я вижу два ответа: список целых чисел не более 2 бит устанавливает * или * список строк с двоичным текстом (0 и 1). Итак, 'List' или 'int []' для опции1 и 'List ' или 'String []' для опции2. Предложите идти со списками, а не массивами. У вашего кода нет типа возврата, который может вернуть то, что вы хотите, поэтому остальная часть кода * не может * выполнить задание. –
Andreas
Что вы ожидаете от «binaryGenerator»? «Строка» - это всего лишь одна строка. Вы не можете вернуть все комбинации 65536 в 'String' (если вы не объедините их в одну большую строку). Кроме того, если вы имели в виду «два бита», какие два бита? И если вы имели в виду «два байта», исправьте свой вопрос. – RealSkeptic
Вопрос говорит «все возможные бинарные комбинации для двух бит», но ваш пример показывает комбинации только с одним * битом. Если один бит в порядке, то почему не нулевые биты? --- То же самое, если вы имели в виду «использовать только два самых разных бита», но ваш вопрос * совершенно другой *, если это то, что вы имели в виду. – Andreas