インタビュースタイルの質問を改善しようとしています。 私はこれを見つけました:このビットスワップコード(Java)を説明してください。
与えられた32ビット整数入力xは、奇数と偶数のビットを入れ替えて、結果の整数を返します。 (例えば、ビット0とビット1がスワップされ、ビット2とビット3がスワップされるなど)。たとえば : のx = 5、バイナリコード= 0101 swapOddEvenBits(5) - > 10
次のように答えがあった。
public int swapOddEvenBits(int x) {
return (((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1));
}
誰かが、これをしてください説明することができます。 また、なぜ(x & 1010101010101)>> 1のようなものを使用できないのですか? これを解決する私の元の試みは、intをバイナリ文字列に変換し、次に隣接する文字をスワップしてintに変換することでした。それは働くだろうか? ありがとうございます。
ありがとうございます。 – Raul