Замены бита в 8-битном числе

131
11 марта 2019, 23:20

Нужно заменить один бит (с 0 на 1 и наоборот) на выбор в фиксированном 8-битном числе:

10011010

Выбирается число от 1 до 8. Например, при выборе 5 выводится 10010010 (5 бит изменился с 1 на 0)

К тому же нужно создать строку для вывода числа (int) в 8-битном формате:

String.format("%8s", Integer.toBinaryString(meinInteger)).replace(' ', '0');
Answer 1
  1. Получаем позицию 1-8 (place). Откуда её брать и нужно ли её проверять на валидность значения - остаётся за рамками вопроса. В примере просто читается число из консоли
  2. Записываем исходное число (number). Для удобства его можно задать бинарным литералом. Хранить ли его в виде int или byte - в данном случае не важно
  3. Инвертируем (0 -> 1, 1 -> 0) нужный бит. Для этого можно воспользоваться xor-ом с соответствующей степенью двойки. Степень двойки можно получить из единицы побитовым сдвигом влево на нужное количество позиций. Номера битов считаются справа налево, начиная с нуля, поэтому сдвиг делается не на place или place - 1, а на 8 - place
  4. Получаем результирующую строку с помощью указанной в вопросе конструкции

Пример итогового кода:

Scanner scanner = new Scanner(System.in);
int place = scanner.nextInt();
int number = 0b10011010;
number ^= 1 << (8 - place);
String result = String.format("%8s", Integer.toBinaryString(number)).replace(' ', '0');
System.out.println(result);

При вводе 5 вывод:

10010010

READ ALSO
Как избежать потери данных при падении сервера?

Как избежать потери данных при падении сервера?

Пишу небольшое приложение на Spring Boot'e, где происходят уведомления по времени

145
Java. removeAll() Collections

Java. removeAll() Collections

Имеется две коллекции (допустим, два List'а String'ов, но это не столь важно)Хочется удалить из коллекции A все элементы коллекции B

150
Переключение label между вкладками в TabLayout

Переключение label между вкладками в TabLayout

Сделал две вкладки в TabLayout, чтоб в ViewPager отображать фрагменты(вкладки)Возникла необходимость менять label в тулбаре в каждом из фрагментов

154
Можно ли TreeView заполнить коллекцией

Можно ли TreeView заполнить коллекцией

Доброго времени суток!

145