2つの符号なしchar_type変数aとbの間でビットのセグメントを交換したいと思います。セグメントがシーケンシャルでない場合、C言語で対処するにはどうすればよいですか?たとえば、aは011 * 001 * 10、入力セグメント長:5、開始位置pa = 5、セグメントはbit7〜bit5およびbit1〜bit0からのもので、01110です。bは10* 011 * 001、位置pb = 6、セグメントはbit6〜bit7およびbit2〜bit0からのもので、10001です。2つのセグメントの長さは同じです。期待される結果の結果は次のようになります:a1 = 11000100、b1 = 11011001
2つの一時変数xとyを使用してスワップビットをbとaに格納し、^を使用してスワップを終了しようとしました。方法が複雑すぎます。トリッキーなアイデアはありますか?