[문제]
입력 된 정수를 비트단위로 참/거짓을 바꾼 후 정수로 출력해보자.
(비트 단위로 1 -> 0, 0 -> 1로 바꾼 후 그 값을 10진수로 출력한다.)
[input 예시]
2
[output 예시]
-3
[나의 풀이]
## 풀이 1
a = int(input())
print('%d' % ~a)
## 풀이 2
a = int(input())
print(~a)
🔽 % 관련 문제, 참고하세요
비트단위 연산자?
비트단위(bitwise) 연산자의 종류
- ~ (bitwise not) '틸드'라고 읽는다
- & (bitwise and)
- | (bitwise or)
- ^ (bitwise xor)
- << (bitwise left shift)
- >> (bitwise right shift)
따라서, 문제에서 요구하는 대로 비트단위로 참/거짓을 바꾸려면
비트단위(bitwise)연산자 '~' 를 붙이면 된다.
참/거짓을 바꾼다는 말이란 무엇일까?
아래 예시를 보며 알아보자~!
1을 32비트로 저장하면 아래와 같이 2진수로 표현되어 저장된다.
00000000 00000000 00000000 00000001
~1은
11111111 11111111 11111111 11111110 (이는 -2를 의미)
0은 1로 1은 0으로 완전히 바뀐 것을 볼 수 있다!
이러한 내용을 간단히 표현하면, 정수 n이라고 할 때,
~n = -n - 1
-n = ~n + 1 과 같은 관계로 표현할 수 있다.
[참고] 컴퓨터에 저장되는 모든 데이터들은 2진수 형태로 바뀌어 저장된다.
0과 1로만 구성되는 비트단위들로 변환되어 저장되는데,
양의 정수는 2진수 형태로 바뀌어 저장되고, 음의 정수는 "2의 보수 표현"방법으로 저장된다.
'# 3. APS > CodeUp' 카테고리의 다른 글
CodeUp # Python 기초 100제_6061_비트단위로 OR 하여 출력하기_(비트단위 논리연산, 버티컬바 Vertical bar) (0) | 2021.07.04 |
---|---|
CodeUp # Python 기초 100제_6060_비트단위로 AND 하여 출력하기_(비트단위 논리연산, 앰퍼샌드 Ampersand) (0) | 2021.07.04 |
CodeUp # Python 기초 100제_6046_정수 1개 입력받아 2배 곱해 출력하기_(비트시프트연산) (0) | 2021.07.04 |
CodeUp # Python 기초 100제_6043_실수 2개 입력받아 나눈 결과 계산하기 (0) | 2021.07.04 |
CodeUp # Python 기초 100제_6038_정수 2개 입력받아 거듭제곱 계산하기 (0) | 2021.07.04 |