비트연산
Algorithms
참고문헌
개요
- 비트 연산자 : 데이터를 비트 단위로 연산한다.
- 0과 1로 표현이 가능한 정수타입, 정수형으로 캐스팅이 가능한 자료형만 비트연산이 가능
- 기능에 따라, (1) 비트 이동 연산자, (2) 비트 논리 연산자로 구분
비트 이동 연산자
- x«n
- 정수 x의 각 비트를 n만큼 왼쪽으로 이동시킨다
- 예를 들면, 1111«3 = 1111000
- 십진수로 따지면 각 자리수를 2^3 곱한 것이므로, 원래수의 2^3배가 된다(15 -> 120)
- x»n
- 정수 x의 각 비트를 n만큼 오른쪽으로 이동시킨다.
- 이 때, 부호를 의미하는 최상부의 값(1이면 음수, 0이면 양수)는 유지된다.
- 예를 들면, 1111111»3 = 1111
- 십진수로 따지면 각 자리수를 2^3으로 나눈 것이며, 나머지들은 버리는 연산이다.
- 원래수를 2^3로 나눈 (나머지 버림) 수가 된다(127 -> 15)
- x»>n
- 최상부의 값이 0이면(양수이면), x»n의 결과와 같다.
- 최상부의 값이 1이면(음수이면), x»n과 같이 오른쪽으로 이동시키되 최상부에 0을 채우기 때문에 부호가 바뀌는 것과 함께 완전히 다른 수가 된다(즉 이 때는 십진수로 이해할 수 없다).
비트 논리 연산자
- & (AND)
- 두 비트 모두 1일 경우에만 연산 결과가 1
- 예시
- 00001111
- 00011001
- 둘 간의 AND 비트연산 결과는
- 00001001
- ! (OR)
- 두 비트 중 하나 이상이 1일 경우에 연산결과가 1
- ^ (XOR)
- 두 비트 중 하나는 1이고 다른 하나가 0일 경우에만 연산결과가 1
- ~ (NOT)
- 비트 반전