해설
ⓘ
XOR이란?
비트 연산 중 하나인 XOR은 두 비트가 다르면 1, 같으면 0을 반환하는 연산입니다.
임의의 짝수와 바로 다음 홀수에 대해, 두 수는 마지막 비트를 제외한 앞부분이 모두 같기 때문에 (2k)⊕(2k+1)=1이 성립합니다.
따라서 0부터 N까지의 모든 정수를 XOR한 결과는 N을 4로 나눈 나머지에 따라서만 달라집니다.
- Nmod4=0: 0⊕N=N
- Nmod4=1: (N−1)⊕N=1
- Nmod4=2: (N−2)⊕(N−1)⊕N=N+1
- Nmod4=3: (N−3)⊕(N−2)⊕(N−1)⊕N=0
이제, S부터 F까지의 모든 정수를 XOR한 결과는 0⊕1⊕⋯⊕(S−1), 0⊕1⊕⋯⊕F를 각각 계산한 뒤 결과를 XOR하여 상쇄시키는 방식으로 구할 수 있습니다.