0

整数があり、その中の 1 ビットを 0 から 1 または 1 から 0 に切り替えたいのですが、その状態がわかりません。1つのステートメントでそれを行うにはどうすればよいですか?

  • 使用して& | ~ ^
  • 避けるif else

(xor 演算子を追加)

4

4 に答える 4

4

これは一般的な操作であり、利用可能な十分な手順があります。たとえば、こちら

ちょっと設定

bit_fld |= (1 << n)

少しクリア

bit_fld &= ~(1 << n)

少し切り替えます

bit_fld ^= (1 << n)

ちょっとテスト

bit_fld & (1 << n)
于 2013-05-20T22:18:53.857 に答える
3

特定のビットをトグルするだけの場合は、XOR ( ^) 操作を使用します。XOR 真理値表を調べて答えを見つけてください。

于 2013-05-20T22:22:45.730 に答える
1

ビットを設定するには ビットごとの OR 演算子 (|) を使用してビットを設定します。

number |= 1 << x;

これにより、ビット x が設定されます。

ビットをクリアするには、ビットごとの AND 演算子 (&) を使用してビットをクリアします。

number &= ~(1 << x);

これにより、ビット x がクリアされます。ビット単位の NOT 演算子 (~) を使用してビット文字列を反転し、AND する必要があります。

少しトグル

The XOR operator (^) can be used to toggle a bit.

数 ^= 1 << x;

于 2013-05-20T22:22:58.920 に答える
0

ビットを反転するには、反転するビットが設定された別の数値で入力数値を XOR することができます。Java ベースの例:

int a = 0b1001;
System.out.println(Integer.toBinaryString(a));
a = a ^ 0b0100; // flip third LSB
System.out.println(Integer.toBinaryString(a));
a = a ^ 0b0100; // flip it back
System.out.println(Integer.toBinaryString(a));

XOR は、あなたが言及した許可された演算子の 1 つではありませんが、それらに関して定義することができます (例) :

int xor(int p, int q) {
    return (p & ~q) | (~p & q);
}

(必要に応じてこの式をインライン化します。)

于 2013-05-20T22:24:13.800 に答える