web-dev-qa-db-ja.com

バイトに特定のビットを設定します

Javaバイト変数。ビットは、.setBit(i)のような適切なメソッドを提供します。これを実現する方法を知っている人はいますか?]

特定のバイトをビット単位で反復処理できます。

if( (my_byte & (1 << i)) == 0 ){

}

ただし、この位置を1または0に設定することはできません。

76
wishi

ビット単位[〜#〜]または[〜#〜]|)および[〜#〜] and [〜#〜]&)演算子。ビットを設定するには、つまり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

例については、 Advanced Java/Bitwise Operators を参照してください

130
driis

ビットを設定するには:

myByte |= 1 << bit;

クリアするには:

myByte &= ~(1 << bit);
65
Jon Skeet

Jon’s answer および driis ’answer を補完するだけです

ビットをトグル(反転)するには

    myByte ^= 1 << bit;
23

必要な手法は、選択したビットを分離し、それを設定またはクリアすることです。上記をテストするためにそれを使用しているので、すでにビットを分離する式を持っています。ビットをORでセットするか、ビットのANDをビットの1の補数でクリアしてビットをクリアできます。

boolean setBit;
my_byte = setBit
          ? myByte | (1 << i)
          : myByte & ~(1 << i);
10
Jeffrey Hantin

あなたのために仕事をするクラスJava.util.BitSetを見てください。

設定するには:myByte.set(bit);リセットするには:myByte.clear(bit); boolで埋めるには:myByte.set(bit, b); boolを取得するには:b = myByte.get(bit);ビットマップを取得するには:byte bitMap = myByte.toByteArray()[0];

7
sebyku