>>70
a=1;
b=1;
a|=b; // a == 1;
a&=~b; // a == 0;
足したのを引いたつもりがずいぶん引かれてしまったように見える。

質問があいまいだからこれでもよかったのかもしれないし、違った(足す前の状態に戻したかった)のかもしれない。