私は最近、次のことを尋ねるインタビューの質問を見ました。
32ビットの数値を指定して、最後から2番目のビットを反転する擬似コードを記述します
これを行うための最良/最も簡単な方法は何ですか?
私は最近、次のことを尋ねるインタビューの質問を見ました。
32ビットの数値を指定して、最後から2番目のビットを反転する擬似コードを記述します
これを行うための最良/最も簡単な方法は何ですか?
#define MASK 0x00000002
新しい=古い^マスク
「最後のビット」をMSBとして解釈する回答もあれば、LSBとして解釈する回答もあります。おそらく彼らは、コードをクランクアウトする前に一時停止して説明を求めるのに十分賢い候補者を探しています。これは、実際の作業では非常に重要です。
X ^ (1<<n) will toggle the state of nth bit in the number X.
排他的論理和2。たとえば、i = i ^ 2
a = 0x80000000; // the second last bit set
if( i & a == 0) // not set in i -> set it
i |= a;
else // set -> un-set it in i
i &= ~a;
編集:arg、もちろんXORできます:-)しかし、2は最後から2番目のビットではなく2番目のビットです。たぶんMSBとLSBについて話す方が良いでしょう。
ビット単位のXOR演算子を使用しますか?