비트 연산
비트 연산이란 정수형 변수를 사람이 사용하는 10진법으로 연산하는 대신 2진법인 비트 단위로 연산할 수 있는 기능이다.
하지만 2진법을 이용한 연산 최적화가 필요하다면 컴파일러의 기능을 사용하는 경우가 대부분이기 때문에 비트연산을 계산하는데에는 거의 사용하지 않는다.
실무에서는 정수형의 값을 비트단위로 나누어 데이터를 좀더 작은 단위로 담아 경제성을 높이기 위한 용도로 사용한다.
32비트에서 5비트 따로 27비트 따로 다른 값을 넣어 사용하는 등
변수 하나에 여러개의 값을 담아 사용
주로 플래그 값(상태를 0과 1로 담음) 처리 하거나 네트워크 등에서 프로토콜의 데이터량을 줄이기 위해 사용
좌측으로 갈수록 상위 비트 우측으로 갈수록 하위 비트이다.
최상위는 부호 비트이기 때문에 데이터를 담지 않는 것이 좋다.
bitwise shift operators
- shl(shift left) : 부호 비트를 제외한 모든 비트를 좌측으로 밀어주는 기능
- shr(shift right) : 부호 비트를 제외한 모든 비트를 우측으로 밀어주는 기능
- ushr(unsigned shift right) : 부호 비트를 포함한 모든 비트를 우측으로 밀어주는 기능
bitwise operators
- and : 원본과 비교하여 둘다 1인 자리만 1로 반환
비트를 확인하는 용도
원하는 위치에만 1을 넣어 확인
비트를 clear하는 연산
원하는 자리에 0을 넣어 clear
- or : 원본과 비교하여 하나라도 1인 자리면 1로 반환
비트의 set연산, 즉 비트 값을 1로 설정하고 싶을 때
1을 넣어주면 1로 set 가능
- xor : 비트가 같으면 0, 다른자리는 1로 반환
비트별로 동일한지 사용
inv()
비트를 모두 반전 시키는 역할을 함