間のビットを入れ替え私はこのコードを試してみました。C二つの数字
はまた、私はこれを見るとき:
*numbB &= (~bitA^oneShift);
私は実際にそれを行うための簡単な方法があることと思います。 あなたは私のために何かを持っている場合、私はそれを取るでしょう:)事前に
おかげ
間のビットを入れ替え私はこのコードを試してみました。C二つの数字
はまた、私はこれを見るとき:
*numbB &= (~bitA^oneShift);
私は実際にそれを行うための簡単な方法があることと思います。 あなたは私のために何かを持っている場合、私はそれを取るでしょう:)事前に
おかげ
まず、あなたはすべてを削除し、実際のビットでそれを0
に応じた数の位置を設定し、OR必要があります条件:
*numbB &= ~oneShift; // Set the bit to `0`
*numbB |= bitA; // Set to the actual bit value
他の数字は同じです。
Veryいいよ!ありがとうございました –
は
unsigned char mask = 1u << bitPosition;
マスクを形成し、その後、XOR swap algorithmであなたのピアグループの怒りを獲得することができます。
*numbA ^= *numbB & mask;
*numbB ^= *numbA & mask;
*numbA ^= *numbB & mask;
numbA == numbB
に注意してください。
私は代わりにそれを与えたいと思っていましたが、最近の質問の一つであるSOのピアの怒りを思い出しました。☺️ –
@EugeneSh。 IMOでは、これは驚くべきエラーであるため、最終的にこのアプローチを拒否するのはnumbA == numbBの問題です。 – chux
まあ、一時変数を使うことができます。 –
これは実際には「2つの数字を入れ替える」わけではありません。「2つの数字の間にビットを入れ替える」というよりも、それはまだ混乱している説明です。 – harold
ステップ1: 1u << bitPosition'(add 'u') – chux
ありがとう、harold、私はタイトルを変更しました。私は気にしませんでした.... Chux、私は今、感謝を使用します:) –