728x90
반응형
※ 일반적으로 시프트 연산자를 이용해 구한 값은 일반적인 수식을 이용해 계산한 값보다 빠르게 처리된다 (기계어)
홀수 / 짝수 판별
if 10 & 1: # 홀수
pass
else: # 짝수
pass
- 10은 이진법에서 1010, 1은 이진법에서 000
- & 연산으로 묶여있기 때문에 위 코드는 False가 도출된다
- True일 경우 홀수, False일 경우 짝수이므로 결과값은 짝수이다
→ 10에 다른 값을 넣어주어서 홀수/짝수 판별에 이용할 수 있다
정수형의 2의 제곱, 2의 제곱근
# 2의 n제곱
print(10<<n)
# 2의 n제곱근
print(10>>n)
- 10 * 2^n과 같은 연산이 수행된다. 만약 10<<2를 실행하면 10*2^2의 값인 40이 출력된다
- 10//2가 n번 진행된다. 이때의 값은 정수형으로 표현되기 때문에 (10/2)/2의 값은 2.5이지만, 정수부분인 2가 출력된다
→ 시프트 연산자를 이용해서 정수형 2의 제곱과 제곱근을 빠르게 찾을 수 있다
'Algorithm Study > 이론' 카테고리의 다른 글
[알고리즘] DFS 구현 (0) | 2022.08.18 |
---|---|
[알고리즘] 패턴 매칭 알고리즘 소스코드 (0) | 2022.08.18 |
[알고리즘] 문자열 패턴 매칭 (0) | 2022.08.12 |
[확률과 통계] 순열과 조합 (0) | 2022.02.15 |
[이코테 자료구조] 5. 이진 탐색 (0) | 2022.01.13 |