私はこの機能を持っていますが、どうやらプログラムがクラッシュする原因になっているようです:
long long todos(long long x,long long i) {
x ^= (1 << i);
long long aux = i - 1;
if(aux >= 0) x ^= (1 << aux);
aux = i - 4;
if(aux >= 0) x ^= (1 << aux);
aux = i + 1;
if(aux < 16) x ^= (1 << aux);
aux = i + 4;
if(aux < 16) x ^= (1 << aux);
return x;
}
私が理解していないのは、すべての^= (
forを変更する&= ~(
と完全に正常に動作する理由です (ただし、得られる出力は異なります)。この動作の論理的な説明はありますか?
コード全体が必要な場合: http://ideone.com/Z7qoof