5

私は最近、次のことを尋ねるインタビューの質問を見ました。

32ビットの数値を指定して、最後から2番目のビットを反転する擬似コードを記述します

これを行うための最良/最も簡単な方法は何ですか?

4

6 に答える 6

9
#define MASK 0x00000002

新しい=古い^マスク

于 2010-07-06T10:54:13.093 に答える
7

「最後のビット」をMSBとして解釈する回答もあれば、LSBとして解釈する回答もあります。おそらく彼らは、コードをクランクアウトする前に一時停止して説明を求めるのに十分賢い候補者を探しています。これは、実際の作業では非常に重要です。

于 2010-10-07T20:53:51.037 に答える
5
X ^ (1<<n) will toggle the state of nth bit in the number X.
于 2010-07-17T00:01:42.737 に答える
4

排他的論理和2。たとえば、i = i ^ 2

于 2010-07-06T10:55:17.160 に答える
3
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について話す方が良いでしょう。

于 2010-07-06T11:02:21.010 に答える
0

ビット単位のXOR演算子を使用しますか?

于 2010-07-06T10:52:33.327 に答える