숫자의 하위 16비트만 반전시키고 싶다면, 해당 숫자를 65535(2진수로 16개의 1)와 XOR 연산하면 됩니다. 그리고 그 결과에 1을 더해주면 바로 2의 보수(2's complement)를 얻을 수 있습니다.
동작 원리
2의 보수는 컴퓨터에서 음수를 표현할 때 사용되는 대표적인 방식입니다. 모든 비트를 뒤집는 1의 보수에 1을 더하면 2의 보수가 됩니다. 65535는 2진수로 1111111111111111이기 때문에, 어떤 숫자와 XOR 연산을 수행하면 하위 16비트가 전부 반전됩니다.
예제 코드
a = 3 # 2진수로 11 b = (a ^ 65535) + 1 print(bin(b))
실행 결과
위 코드를 실행하면 다음과 같은 출력이 나옵니다.
0b1111111111111101
출력 결과를 보면 3(0b11)의 하위 16비트가 반전된 뒤 1이 더해져, -3에 해당하는 2의 보수 값인 0b1111111111111101이 출력된 것을 확인할 수 있습니다.