Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 16비트 숫자의 2의 보수 구하는 방법

숫자의 하위 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이 출력된 것을 확인할 수 있습니다.