Как изменить отдельные биты объекта класса BitSet

Пример: у меня есть BitSet из 120 бит (010*0*001000......). Теперь я хочу изменить 4-й бит, который установлен с нуля на 1.

SET(4,TRUE) - Что-то вроде этого. Можно ли это сделать на Java?

Я могу сделать это через cov=nverting битовый набор в массив Char[], а затем изменить точный бит и снова обратить его обратно в Bitset, но это использует много ненужной памяти и будет снижать производительность. Пример будет в самый раз. Если необходимы дополнительные разъяснения, дайте мне знать через ваши комментарии.


person JavaBits    schedule 29.03.2011    source источник


Ответы (2)


BitSet API описан в javadoc, и существует ряд методов set(...) для установки или очистки отдельных битов или диапазонов битов.

BitSet b = ...
b.set(4, true);

Прочтите javadoc, чтобы узнать, используете ли вы правильное значение для индекса. (Счет с нуля против счета с единицы.)

На самом деле, просто прочитайте javadoc.

person Stephen C    schedule 29.03.2011

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

Он имеет четыре метода установки с различными входными параметрами:

1.set(int bitIndex) — устанавливает для бита по указанному индексу значение true.

2.set(int bitIndex, boolean value) — устанавливает бит по указанному индексу в указанное значение.

3.set(int fromIndex, int toIndex) — устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключая) в значение true.

4.set(int fromIndex, int toIndex, boolean value) — устанавливает биты от указанного fromIndex (включительно) до указанного toIndex (исключительно) до указанного значения.

Я постараюсь включить пример в ближайшее время.

person JavaBits    schedule 30.03.2011