Если это экзамен по информатике для колледжа / средней школы или домашнее задание - я подозреваю, что они пытаются заставить вас использовать BOOLEAN BIT-WISE LOGIC - особенно, сохраняя бит внутриint или long.Я подозреваю (но я не читаю мысли - и я могу ошибаться!), Что использование «Массивов» - это в точности , чего ваш учитель хотел бы, чтобы вы избегали.
Например, эта цитата скопирована из результатов поиска Google:
long: Тип данных long - это 64-разрядное целое число с дополнением до двух .Подписанный long имеет минимальное значение -263 и максимальное значение 263-1.В Java SE 8 и более поздних версиях вы можете использовать тип данных long для представления 64-битной длины без знака, которая имеет минимальное значение 0 и максимальное значение 264-1
Что это означаетв том, что одна длинная переменная в Java может хранить 64 ваших побитовых значения:
long storage;
// To get the first bit-value, use logical-or ('|') and get the bit.
boolean result1 = (boolean) storage | 0b00000001; // Gets the first bit in 'storage'
boolean result2 = (boolean) storage | 0b00000010; // Gets the second
boolean result3 = (boolean) storage | 0b00000100; // Gets the third
...
boolean result8 = (boolean) storage | 0b10000000; // Gets the eighth result.
Я мог бы написать все для вас, но я не уверен на 100% в ваших реальных спецификациях - есливы используете long, вы можете хранить только 64 отдельных двоичных значения.Если вам нужно произвольное количество значений, вам придется использовать столько «длинных», сколько вам нужно.
Вот SO сообщения о двоичных / логических значениях: Двоичное представление в Java
Вот SO пост о сдвиге битов: Java - Сдвиг по кругу с использованием побитовых операций
Опять это будет работа, и я не собираюсьнапиши весь проект.Однако методы get(int index)
и set(int index, boolean val)
будут включать побитовое смещение числа 1.
int pos = 1;
pos = pos << 5; // This would function as a 'pointer' to the fifth element of the binary number list.
storage | pos; // This retrieves the value stored as position 5.