私は integer を持っていて、バイナリ表現で (最下位から) 番目のビットn
を反転させたいと考えています。k
どうすればいいですか?
たとえば、 と がある場合n=0b01101
、k=2
結果は次のようになります。0b01001=9
どの言語でも構いません。ありがとうございました。
cでは、これを行うだけで切り替えられます:
n ^= 1 << k;
しかし、次のような他の方法があります。
n |= ( 1 << k);
これにより、ビット k が 1 にシフトされます。
ビットを反転させたい場合は、単項を使用して if ステートメントを実行し、どのように反転する必要があるかを確認できます。
number = pow(2,k)
if((number & n) != number)
//this means that it's a 0 at position k
n |= ( 1 << k);
else
//this means that it's a 1 at position k
n &= ( 0 << k);
Cでそれを行う方法は次のとおりです。
n ^ (1 << k)