Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Python
- MNIST
- MLE
- map
- anomalydetection
- Snn
- Deep Neural Network
- 인공신경망
- 머신러닝
- Generative Model
- Fast Fourer Transform
- Wavelet Transform
- ML
- Bagging
- 레이텍
- Deep Learning
- 논문 해석
- autoencoder
- 논문 리뷰
- Spiking Neural Network
- ae
- 머신러닝 논문리뷰
- 딥러닝
- 뉴럴네트워크
- 이상 현상 탐지
- rnn
- 논문리뷰
- Machine Learning
- 이상 탐지
- 기계학습
- Today
- Total
MATH & ML
시프트 연산자, 비트 연산자 본문
몇 가지 연산에 대해서 정리해보려 한다.
먼저 두 개의 시프트연산
1. a>>b
a를 2진수로 나타내어 b개만큼 오른쪽(나누기)으로 밀어버린다
2. a<<b
a를 2진수로 나타내어 b개만큼 왼쪽(곱하기)으로 밀어버린다.
즉, 다시 말해서 시프트 연산 <<은 2의 거듭제곱을 곱하기, >>은 2의 거듭제곱을 나누기(버림)이다.
또한 3가지 비트 연산자
3. a&b(and)
a와 b를 2진수로 나타내어 각 자리수를 비교해서 둘다 1일때만 1로 출력한다.
4. a|b(or)
둘 중 하나만 1일때만 1로 출력한다.
5. a^b(xor)
두 개가 다를때만 1로 출력한다.
그러면 여기서 중요한점은 컴퓨터는 2진수로 바꾸어 모든 일을 처리하기 때문에
이 5가지 같은 연산자를 이용하여 알고리즘을 작성하면 메모리를 훨씬 덜 먹기 때문에 잘 알아두어야 한다.
예를들어
8을 4으로 나눈 나머지 구하기
를 할 때에도
8%4
를 하면 바로 되겠지만 이보다 메모리를 더 적게쓰는
8&3
을 하면 8의 2진수의 맨 뒤 두 자리수만 그대로 출력하게 되므로 4로나눈 나머지가 나오며
메모리를 더 적게 쓴다!
이와같이 이러한 연산자들을 잘 이용하여 메모리를 줄일 수 있다는게 포인트!!
'Algorithm' 카테고리의 다른 글
알고리즘 몇 가지 팁 (0) | 2018.08.30 |
---|---|
정렬 알고리즘 정리(삽입정렬, 선택정렬, 버블정렬, 병합정렬, 퀵정렬, 힙정렬, 기수정렬) (0) | 2018.02.19 |
시간 제한 vs 메모리 제한 (0) | 2018.02.19 |
컴파일, 컴파일 언어 vs 인터프리터 언어 (0) | 2018.02.19 |
알고리즘 공부는 당분간은 C언어로 (0) | 2018.02.01 |
Comments