비트단위(bitwise) 연산자
연산 | 결과 |
x | y | x 와 y 의 비트별 or |
x ^ y | x 와 y 의 비트별 배타적 or (exclusive or) |
x & y | x 와 y 의 비트별 and |
x << n | x 를 n 비트만큼 왼쪽으로 시프트 |
x >> n | x 를 n 비트만큼 오른쪽으로 시프트 |
~x | x 의 비트 반전 |
예1)
1은 00000000 00000000 00000000 00000001 이고,
~1은 11111111 11111111 11111111 11111110, 즉 -2다.
~n = -n - 1 의 관계가 존재함을 알아두자!
예2) 3과 5가 입력되었을 때를 살펴보면
3 : 00000000 00000000 00000000 00000011
5 : 00000000 00000000 00000000 00000101
3 | 5 : 00000000 00000000 00000000 00000111
3 & 5 : 00000000 00000000 00000000 00000001
3 ^ 5 : 00000000 00000000 00000000 00000110
이 된다.
예3)
n = 10 = 001010
print(n<<1) #10을 2배 한 값인 20 이 출력된다. = 010100
print(n>>1) #10을 반으로 나눈 값인 5 가 출력된다. = 00101
print(n<<2) #10을 4배 한 값인 40 이 출력된다. = 101000
print(n>>2) #10을 반으로 나눈 후 다시 반으로 나눈 값인 2 가 출력된다. = 0010
비트단위 or 연산은 둘 중 하나라도 1인 자리를 1로 만들어주는 것과 같다.
이러한 비트단위 연산은 빠른 계산이 필요한 그래픽처리에서도 효과적으로 사용된다.
삼항 연산자(Ternary operators)
(참인 경우의 값) if 조건 else (거짓인 경우의 값)
조건에 만족하는 참인 경우의 값은 if 앞에, 거짓인 경우의 값은 else 뒤에 써준다.
** 3항 연산은 자주 사용되지는 않지만, 복잡한 계산식이나 조건 처리, 비교 구조를 간단히 표현할 수 있게 해준다.
사용 예시는 아래와 같다.
# 정수 두 a,b를 사용자로부터 입력 받는다.
# 둘중에 더 큰 값을 print 한다.
a, b = map(int, input().split())
print(a if a>b else b)
출처: 코드업 파이썬 100제
'💻dev > 🐍Python' 카테고리의 다른 글
Python | 파이썬에서 아스키코드 - 문자 변환 방법, ord(), chr() (0) | 2023.04.02 |
---|---|
Python | 코드는 더 길어도 수행시간은 더 짧다?! (코드업 파이썬 기초 100제 6056번) (0) | 2023.03.29 |
Python | 파이썬 내장함수 any와 all을 아십니까? (0) | 2023.03.28 |
Python | 파이썬 출력 - 값 변환 (8진수, 16진수, 반올림, 비트시프트, 유니코드) (0) | 2023.03.26 |
Python | 함수와 메서드의 차이, 더이상 헷갈리지 말자! (0) | 2023.03.17 |