Algorithm

비트마스크 - 1

와이제인 2017. 12. 30. 18:07

비트마스크


비트연산을 통해서 부분집합을 표현한다. bitwise operation으로는 & (and), | (or), ~ (not), ^ (xor) 이 있다.

비트연산을 하는 경우, 가장 뒤의 자리부터 하나씩 비교해가며 연산을 수행한다. A=25, B=51이라면 A는 2진수로 11001이고 B는 110011이다.

ex)

A & B

011001

110011

--------

010001  ==> 17


not 연산은 자료형에 따라 결과값이 다르게 나타난다. 8비트와 32비트의 자료형을 비교하면 그 결과가 달라질 수 있다. 또한 signed와 unsigned에 따라서도 그 결과가 다르다. shift register를 떠올려보면, shift left와 shift right이 있었다. 말 그래도 shift left면 왼쪽으로 비트를 미는 것이다. A << B라면 A를 왼쪽으로 B비트만큼 민다.  예를 들어 1 << 1 이면 1을 왼쪽으로 1비트만큼 밀기 때문에 2진수 10, 즉 10진수로는 2이다.  1 << 3 이라면 1을 왼쪽으로 3비트만큼 밀기 때문에 1000, 즉 8이다. 3 << 3이면 3이 2진수로 11이므로 11을 왼쪽으로 3비트 밀면 11000, 24이다. shift right는 오른쪽으로 미는 것이다.


A << B 는 A x 2의B승,  A >> B 는 A / 2의B승으로 나타낼 수 있다. 홀수 판별 시, if(N%2==1) 대신에 if(N&1)로 줄일 수 있다.