MariaDB Bitwise AND(&) 연산
제 프로젝트에서는 32비트와 64비트의 제품 소프트웨어 아키텍처가 다양한 제품에 대해 각각 21비트와 22비트로 테이블에 저장되어 있습니다.
우연히 SQL에서 아키텍처에 대해 'where' 절이 언급되었습니다.22
'architecture & 2 = 2';
및 아키텍처용 21
'architecture & 2 != 2';
위 문장의 중요성과 2 = 2가 이 SQL에서 수행하는 작업을 이해할 수 없습니다.
일반적으로.x & m = m
마스크의 모든 비트가m
값으로 설정되다x
.
22의 이진 표현은 10110이고2 21의 이진 표현은 10101입니다2.신청시x & 2
mask를 22로 설정하면 2가 반환됩니다. 오른쪽에서 두 번째 비트가 22로 설정되기 때문입니다.이런 이유로architecture & 2 = 2
되지요true
.
21에 동일한 테스트를 적용하면 오른쪽에서 두 번째 비트가 설정되지 않았기 때문에 0이 반환됩니다.architecture & 2 != 2
되지요true
.
architecture 필드에는 비트 합계가 저장됩니다.
가치가 있다면architecture = 22
즉,architecture = 2+4+16
의 가치가architecture is 21
즉,architecture = 1+4+16
비트 합계의 경우 값의 범위를 고려합니다: 1, 2, 4, 8, 16, 32, 64...
그래서 그 표현은
'architecture & 2 = 2';
는 숫자 2가 아키텍처 필드에 저장되어 있는지 여부를 확인하는 것입니다.
한다면architecture is 21
결과는 0 입니다.그럼, 거짓이군요
한다면architecture = 22
결과는 2입니다.그래, 맞는 말이야.
그건 중고입니다
AND 연산자
where 2=2
그것은 진실이라는 뜻이다.
1,2,4,8처럼 바이너리로 바꿀 수 있습니다.
언급URL : https://stackoverflow.com/questions/48542232/mariadb-bitwise-and-operation
'sourcecode' 카테고리의 다른 글
배열에 대한 Python csv 문자열 (0) | 2022.09.17 |
---|---|
Eclipse WTP vs sydeo, "출판 없이 모듈 제공" (0) | 2022.09.16 |
테이블에서 가장 큰 ID를 가진 전체 행을 선택하려면 어떻게 해야 합니까? (0) | 2022.09.16 |
csv 파일에서 사전을 생성하시겠습니까? (0) | 2022.09.16 |
원형 구조를 JSON과 같은 형식으로 인쇄하려면 어떻게 해야 합니까? (0) | 2022.09.16 |