Установить определенный бит в байте
Я пытаюсь установить биты в переменной байта Java. Он предоставляет методы propper, такие как .setBit(i)
. Кто-нибудь знает как я могу реализовать это?
Я могу перебирать бит-мудрый через данный байт:
if( (my_byte & (1 << i)) == 0 ){
}
однако я не могу установить это положение в 1 или 0, не так ли?
5 ответов:
использовать побитовое или (
|
) и и (&
) операторы. Чтобы установить бит, а именно поверните бит наpos
до1
:my_byte = my_byte | (1 << pos); // longer version, or my_byte |= 1 << bit;` // shorthand
чтобы снять немного, или поверните его в
0
:my_byte = my_byte & ~(1 << pos); // longer version, or my_byte &= ~(1 << bit); // shorthand
например, см. Расширенные Java / Побитовые Операторы
просто в дополнение Джон и driis‘ ответ
для переключения (инвертировать) немного
myByte ^= 1 << bit;
вам нужно изолировать выбранный бит и либо установить, либо очистить его. У вас уже есть выражение, чтобы изолировать бит, так как вы используете его для тестирования выше. Вы можете установить бит, вставив его, или очистить бит побитово и с дополнением 1 к биту.
boolean setBit; my_byte = setBit ? myByte | (1 << i) : myByte & ~(1 << i);