6059 : [기초-비트단위논리연산] 비트단위로 NOT 하여 출력하기(설명)(py)
입력값 |
정수 1개가 입력된다. -2147483648 ~ +2147483647 |
출력값 |
비트 단위로 1 -> 0, 0 -> 1로 바꾼 후 그 값을 10진수로 출력한다. |
입력 예시 |
2 |
출력 예시 |
-3 |
정답 및 가능한 정답
a=int(input())
print(~a)
해설
비트 연산자
파이썬에서는 2진수의 비트 단위에서 활용하는 연산자를 제공한다.
& : AND 연산, 둘 다 참일 때 만족
| : OR 연산, 둘 중 하나만 참이어도 만족
^ : XOR 연산 : 둘 중 하나만 참일 때 만족
~ : NOT 연산 : 보수 연산(0과 1을 바꿈)
<< : 왼쪽 시프트 연산, 변수의 값을 왼쪽으로 지정한 비트 수만큼 이동
>> : 오른쪽 시프트 연산, 변수의 값을 오른쪽으로 지정한 비트 수만큼 이동
2의 보수
컴퓨터에서 음의 정수는 "2의 보수 표현"으로 저장된다.
2의 보수 : 음수를 나타내기 위한 부호 변환 방법
2의 보수 구하는 방법 : 2진수 비트 반전 후 1 더하기.
ex) 3을 -3으로 바꾼다.
>>> 0011=>1101
ex) 6를 -6으로 바꾼다.
>>> 0110=>1010
~ NOT 연산 원리
10진수 n이 있을 때, 그에 대한 음수 -n은 ~n+1과 같다.
고로 ~n은 -n-1과 같다.
~n=-n-1
~2는 -3이고
~-3은 2이다.