MATH & ML

시프트 연산자, 비트 연산자 본문

Algorithm

시프트 연산자, 비트 연산자

BlogYong 2018. 2. 1. 17:30

몇 가지 연산에 대해서 정리해보려 한다.


먼저 두 개의 시프트연산


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로나눈 나머지가 나오며

메모리를 더 적게 쓴다!

이와같이 이러한 연산자들을 잘 이용하여 메모리를 줄일 수 있다는게 포인트!!

Comments