AND, OR, NOT, XOR 의 새로운(?)이용

여러분도 아시다시피 AND, OR, NOT, XOR은 조건문에서 자주 쓰게되는 구문들입니다. (NOT은 쓸일이 없지만요.) 하지만 이 구문들이 조건문이 아닌 다른 방식으로도 이용이 된다는 것을 알고 계셨나요? 저도 최근에 알게 된 사실인데, 위 구문들은 BIT단위의 연산에도 사용이 가능한 구문들입니다. 설명에는 byte, integer, unsigned integer,long word, 64-bit long word 형식에 쓰인다고 하네요. 당연하게도 다 정수형 표현이 되는 형식들입니다. 간단하게 보자면,

첫번째는 5와 7의 bit단위의 AND연산입니다. 5는 0101이고 7은 0111이기 때문에 둘의 AND연산은 0101이 되어서 5가 되는 것이지요.(원래는 int 형식이기 때문에 bit수는 훨씬 큽니다.) 두번째도 같은 형식으로 0010과 0001의  OR연산으로 0011이 된 것입니다. NOT연산의 경우 기본적으로 정수형으로 표현되는 특징 때문에, 2의 보수로 표현이 되어 -4가 나오게 됩니다. 음수가 없는 byte형으로 주었더니 252가 나오네요. XOR연산은 0111 과 0011이 0100으로 출력되는 것을 알 수 있습니다.

좀 길었지만  AND, OR, NOT, XOR 모두가 정상적으로 bit연산을 하고 있는 것을 알 수 있습니다. 추가적으로 비트의 이동은 다음과 같이 할 수 있습니다.

ishft 함수는 첫번째 인자를 두번째 인자만큼 Bit Shift해줍니다. 양수면 왼쪽으로 이동하고 음수면 오른쪽으로 이동하네요. 대신에 이동한 비트는 그대로 사라집니다. 이정도만 주의하시면 되겠네요.

그런데 비트연산 자주 하시나요???