次のループを作成しようとしています:
int temp=0x07;
if(left sensor detects){
byteTx((temp)^(1<<0)); //(toggle bit 0)
}
if(right sensor detects){
byteTx((temp)^(1<<2)); //(toggle bit 2)
}
if(front sensor left || front sensor right detects){
byteTx((temp)^(1<<1)); //(toggle bit 1)
}
ただし、他のすべての if ステートメントは正しい値を切り替えますが、他のステートメントはリセットします (temp が 0x07 であるため)。
質問 : 必要なビットのみをトグルし、他の if ステートメントによってトグルされた場合でも他のビットを変更しないようにするにはどうすればよいですか。基本的に、出力を保存し、temp の代わりにそれを使用したいと考えています。
助けてくれてありがとう。さらに情報が必要な場合はお知らせください。
編集
回答ありがとうございますが、トグルの方法を尋ねているのではなく、トグルされた値が IF ステートメント間で一貫していることを確認する方法を尋ねています。
0x07 は、他の IF ステートメントでトグルされる他のビットをリセットし続けます。IF ステートメントが他のビットをリセットしないようにしたいと思います。
例
0000 0111 ^(1<<0) は、出力が 0000 0110 であることを意味します
しかし、他の IF ステートメントの場合:
0000 0111 ^(1<<2) は、出力が 0000 0011 であることを意味します
ご覧のとおり、結果は 0011 で、最初のステートメントの 0 ビットが 1 に戻ります。
どうすればそれを防ぐことができますか?