[MySQL] 비트연산자

szlee·2024년 10월 20일
0

MySQL

목록 보기
7/16

MySQL에서 비트 연산자는 이진수 형태의 데이터에 대해 각 비트 단위로 연산을 수행하는 데 사용됩니다. 비트 연산자는 주로 숫자 데이터에서 비트별 조작이 필요할 때 사용됩니다. MySQL에서는 여러 비트 연산자를 제공하며, 주로 AND, OR, XOR, NOT 등의 연산을 수행할 수 있습니다.

주요 비트 연산자

  • 비트 AND (&): 두 숫자의 대응하는 비트가 모두 1일 때만 결과 비트가 1이 됩니다.
  • 비트 OR (|): 두 숫자의 대응하는 비트 중 하나라도 1이면 결과 비트가 1이 됩니다.
  • 비트 XOR (^): 두 숫자의 대응하는 비트가 다를 때만 결과 비트가 1이 됩니다.
  • 비트 NOT (~): 숫자의 각 비트를 반전시킵니다. 1은 0으로, 0은 1로 바꿉니다.
  • 비트 왼쪽 시프트 (<<): 숫자의 비트를 왼쪽으로 지정된 횟수만큼 이동시킵니다.
  • 비트 오른쪽 시프트 (>>): 숫자의 비트를 오른쪽으로 지정된 횟수만큼 이동시킵니다.

비트 연산자 사용 예시

비트 AND (&)

비트 AND는 두 값의 대응하는 비트가 모두 1일 때만 결과 비트가 1이 됩니다.


SELECT 6 & 3;  -- 결과: 2
  • 6의 이진수: 110
  • 3의 이진수: 011
  • 6 & 3의 결과는 010 (즉, 2)

비트 OR (|)

비트 OR는 두 값의 대응하는 비트 중 하나라도 1이면 결과 비트가 1이 됩니다.

SELECT 6 | 3;  -- 결과: 7
  • 6의 이진수: 110
  • 3의 이진수: 011
  • 6 | 3의 결과는 111 (즉, 7)

비트 XOR (^)

비트 XOR는 두 값의 대응하는 비트가 다를 때만 결과 비트가 1이 됩니다.


SELECT 6 ^ 3;  -- 결과: 5
  • 6의 이진수: 110
  • 3의 이진수: 011
  • 6 ^ 3의 결과는 101 (즉, 5)

비트 NOT (~)

비트 NOT는 숫자의 각 비트를 반전시킵니다. 1은 0으로, 0은 1로 바뀝니다.


SELECT ~6;  -- 결과: -7
  • 6의 이진수: 00000000 00000000 00000000 00000110
  • ~6의 결과는 11111111 11111111 11111111 11111001 (즉, -7)
  • 여기서 결과가 -7인 이유는 MySQL에서 음수는 2의 보수를 사용하여 표현되기 때문입니다.

비트 왼쪽 시프트 (<<)

비트 왼쪽 시프트는 숫자의 비트를 왼쪽으로 이동시키고, 오른쪽에는 0이 채워집니다.


SELECT 3 << 2;  -- 결과: 12
  • 3의 이진수: 11 (2비트)
  • 3 << 2는 1100 (즉, 12)

비트 오른쪽 시프트 (>>)

비트 오른쪽 시프트는 숫자의 비트를 오른쪽으로 이동시키고, 왼쪽에는 0이 채워집니다.


SELECT 12 >> 2;  -- 결과: 3
  • 12의 이진수: 1100
  • 12 >> 2는 11 (즉, 3)



실제 활용 예시

비트 연산자는 보통 다음과 같은 경우에 유용하게 사용됩니다.

  • 플래그 값 처리: 여러 플래그나 옵션을 하나의 정수로 저장하고 각 비트별로 의미를 부여할 때.
  • 접근 권한: 여러 권한을 비트 플래그로 저장하고 비트 AND 연산을 통해 특정 권한이 있는지 확인할 때.
  • 효율적인 데이터 저장: 여러 상태나 플래그를 0과 1의 비트로 표현해 저장 공간을 절약할 때.

예시: 플래그 값 처리

여러 플래그를 하나의 정수로 저장하고 비트 연산을 통해 특정 플래그가 활성화되어 있는지 확인할 수 있습니다.

-- 플래그 값 1: 읽기 권한, 2: 쓰기 권한, 4: 실행 권한
SELECT 5 & 1 AS '읽기 권한', 5 & 2 AS '쓰기 권한', 5 & 4 AS '실행 권한';

5의 이진수: 101 (읽기 권한과 실행 권한이 활성화되어 있음)
결과: 읽기 권한 = 1, 쓰기 권한 = 0, 실행 권한 = 1

요약
비트 연산자는 숫자의 각 비트를 조작하는 데 사용됩니다.
주요 연산자로는 비트 AND(&), 비트 OR(|), 비트 XOR(^), 비트 NOT(~), 비트 시프트 연산(<<, >>)이 있습니다.
이 연산자는 플래그 값 처리, 권한 관리, 효율적인 데이터 저장 등에 유용하게 사용됩니다.

profile
🌱

0개의 댓글