Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 독서
- 자바
- 비전공자
- 알고리즘
- AWS
- 비트연산
- 3009
- 수학은 체육
- 15894
- 개발자
- 소수 찾기
- 11382
- XOR
- 입문도서
- 네 번째 점
- 꼬마정민
- 약수
- 코딩테스트
- solutions architect associate
- 음수
- 네트워크
- for문
- 소수 판별
- 자료형
- enhanced-for-loop
- 백준
- 백엔드
- 직사각형
- AWS Certified
- SAA
Archives
- Today
- Total
내 머리속 어딘가...
[파이썬] 쉬프트 연산자 (비트 연산자) 본문
반응형
쉬프트 연산자 (비트 연산자)
>>, <<
위와 같이 표현되는 연산자인데
사실 이건 사용할 일이 거의 없어서 몰라도 된다
간단히 설명하자면 이진수로 표현한 숫자를
전체적으로 좌우로 이동시키는 개념이라고 보면 되는데...
이제부터 조금 자세히 예를 들어서 설명해 보겠다.
a에 10이라는 정수가 들어있다고 가정해보자.
a = 10
이걸 이진수로 표현하면
a = 1010 으로 나타낼 수 있는데
간단히 말하자면
이 1010이라는 a의 이진수 값을 좌 또는 우로 옮기는 것을 뜻한다.
위 그림과 같이 숫자들이 좌우로 이동하게 되고,
위에서 볼 수 있듯이 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)
이런 개념이라고 보면 된다.
끝!
참조 블로그
반응형
'프로그래밍 공부 > Python' 카테고리의 다른 글
[파이썬] 복습 노트 - 5 | 컬렉션(collection)의 종류와 특징 (3) | 2025.01.24 |
---|---|
[파이썬] 복습 노트 - 4 | 다양한 연산자와 우선순위 (0) | 2025.01.24 |
[파이썬] 복습 노트 - 3 | 시퀀스 자료형, 이스케이프 문자, 형식 문자열 (1) | 2025.01.24 |
[파이썬] 복습 노트 - 2 | 변수와 기본 자료형 (3) | 2025.01.23 |
[파이썬] 복습 노트 - 1 | 파이썬의 특징 (0) | 2025.01.23 |