Algorithm Study/이론

[파이썬] 시프트 연산자 이용

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의 제곱과 제곱근을 빠르게 찾을 수 있다