MariaDB에서 비트 연산자는 비트 수준에서 데이터를 조작하는 데 사용됩니다. 이는 비트 단위로 데이터를 처리할 수 있는 강력한 도구이며, 주로 플래그를 관리하거나 특정 비트 패턴을 검사하는 데 유용합니다. 아래는 MariaDB에서 지원하는 주요 비트 연산자들과 그 동작에 대한 설명입니다.
1. AND 연산자 (&
)
- 두 피연산자 간의 비트 단위 AND 연산을 수행합니다.
- 두 비트가 모두 1인 경우에만 결과가 1이 됩니다.
SELECT 6 & 3; -- 결과: 2 (6 = 110, 3 = 011, AND 연산 결과: 010 = 2)
2. OR 연산자 (|
)
- 두 피연산자 간의 비트 단위 OR 연산을 수행합니다.
- 두 비트 중 하나라도 1인 경우 결과가 1이 됩니다.
SELECT 6 | 3; -- 결과: 7 (6 = 110, 3 = 011, OR 연산 결과: 111 = 7)
3. XOR 연산자 (^
)
- 두 피연산자 간의 비트 단위 XOR 연산을 수행합니다.
- 두 비트가 서로 다르면 결과가 1이 됩니다.
SELECT 6 ^ 3; -- 결과: 5 (6 = 110, 3 = 011, XOR 연산 결과: 101 = 5)
4. NOT 연산자 (~
)
- 단일 피연산자에 대해 비트 단위 NOT 연산을 수행합니다.
- 모든 비트를 반전시킵니다 (1을 0으로, 0을 1로).
SELECT ~6; -- 결과: -7 (6 = 000...0110, NOT 연산 결과: 111...1001 = -7)
- 여기서
~
연산자는 2의 보수를 생성하는 데 사용되며, 음수 값으로 변환됩니다.
5. 비트 시프트 연산자
- LEFT SHIFT (
<<
): 왼쪽으로 비트를 이동시키며, 오른쪽은 0으로 채워집니다. - RIGHT SHIFT (
>>
): 오른쪽으로 비트를 이동시키며, 왼쪽은 0으로 채워집니다. SELECT 6 << 1; -- 결과: 12 (6 = 110, 왼쪽으로 1 비트 이동: 1100 = 12) SELECT 6 >> 1; -- 결과: 3 (6 = 110, 오른쪽으로 1 비트 이동: 011 = 3)
6. 응용 예시
- 플래그 관리: 비트 연산자를 사용하여 여러 상태 플래그를 관리할 수 있습니다. 예를 들어, 4개의 상태를 4비트로 관리할 수 있으며, 각 상태는 특정 비트를 사용하여 켜거나 끌 수 있습니다.
- 권한 시스템: 비트 필드를 사용하여 여러 권한을 하나의 정수로 관리할 수 있습니다. 예를 들어, 읽기, 쓰기, 실행 권한을 각각 다른 비트로 관리할 수 있습니다.
# 권한을 비트로 관리 (읽기: 1, 쓰기: 2, 실행: 4)
SELECT 1 | 2 | 4; -- 결과: 7 (모든 권한을 가진 상태)
SELECT 7 & 1; -- 결과: 1 (읽기 권한 확인)
7. 주의사항
- 비트 연산은 정수 타입에만 적용됩니다. 다른 데이터 타입에 대해 비트 연산을 수행하려면 먼저 정수로 변환해야 합니다.
- 결과는 계산된 정수 값으로 반환되며, 비트 연산 후의 값이 음수 또는 큰 값일 수 있습니다.
비트 연산자는 매우 강력하지만, 잘못 사용하면 코드의 가독성이 떨어질 수 있으므로 필요한 곳에서만 신중하게 사용하는 것이 좋습니다.
'Development > MySql' 카테고리의 다른 글
[MySQL] 생성된 컬럼에 auto_increment 속성 부여하기 (0) | 2023.08.25 |
---|---|
[MySQL] MySQL server has gone away (0) | 2023.08.11 |
[MySQL] sql_mode=only_full_group_by 에러 해결 방법 (0) | 2023.08.11 |
[MongoDB] MongoDB를 MySQL으로 마이그레이션 하기 (0) | 2023.08.07 |
[MySQL] 테이블 깨졌을 때 복구하기 (0) | 2023.08.04 |