내 머리속 어딘가...

[파이썬] 쉬프트 연산자 (비트 연산자) 본문

프로그래밍 공부/Python

[파이썬] 쉬프트 연산자 (비트 연산자)

내 머리속 어딘가 2025. 1. 24. 16:24
반응형

쉬프트 연산자 (비트 연산자)

>>, <<

위와 같이 표현되는 연산자인데

 

사실 이건 사용할 일이 거의 없어서 몰라도 된다

 

간단히 설명하자면 이진수로 표현한 숫자

전체적으로 좌우로 이동시키는 개념이라고 보면 되는데...

 


이제부터 조금 자세히 예를 들어서 설명해 보겠다.

 

 

 

a 10이라는 정수가 들어있다고 가정해보자.

a = 10

 

이걸 이진수로 표현하면

a = 1010 으로 나타낼 수 있는데

 

간단히 말하자면

1010이라는 a의 이진수 값을 좌 또는 우로 옮기는 것을 뜻한다.

출처 : https://saico0.tistory.com/6

 

위 그림과 같이 숫자들이 좌우로 이동하게 되고,

위에서 볼 수 있듯이 a>>2의 경우에는

밑에 자리수가 짤려서 10만 남게 되는 것도 확인할 수 있다.


<연산의 결과>

이 연산이 가져오는 결과가 뭘까 보면

a<<N 은 a를 2**N만큼 곱한 것과 같고,

a>>N 은 a를 2**N으로 나눈 결과의 몫이라고 볼 수 있다.

 

a<<N ---> a * 2**N

a>>N ---> a // 2**N


이해가 안된다면 십진수로 한번 비슷하게 만들어보자.

<가정>  가상의 연산 >>>, <<<

b = 45 라는 십진수 수가 있다

그리고

b<<<N 이라는 표현이 b를 십진수 자리수 N자리 왼쪽으로 이동,

b>>>N 이라는 표현은 b를 십진수 자리 N자리 오른쪽으로 이동이라고 해보자

  ... 10**4 10**3 10**2 10**1 10**0
b ... 0 0 0 4 5
b <<< 3 ... 4 5 0 0 0
b >>> 1 ... 0 0 0 0 4

그러면 이렇게 표현이 가능할 것이다.

 

b<<<3 --> 45000 이 되었고, (45 * 10**3)

b>>>1 --> 4 가 되었다. (45 // 10**1)

 

이런 개념이라고 보면 된다.

끝!


 

 

 

참조 블로그

https://saico0.tistory.com/6

반응형