c=pow(2,k)のとき、n xor cはn + c*((n/c) mod 2 ? -1:1)と等しいらしい

解説

c == pow(2,k) == (1<<k)
n + c*((n/c) mod 2 ? -1:1)
→ n + c*((n/(1<<k)) mod 2 ? -1:1)
→ n + c*((n>>k)mod 2?-1:1)
→ n + c*([nのk番bitが立っているか]?-1:1)
→ [nのk番が立っているか] ? n-c :n+c
→ [nのk番が立っているか]? [nのk番を折る] :[nのk番を立てる]
→ n^c