:meta-keywords: CUBRID bitwise operator, cubrid bit_and, cubrid bit_or, cubrid bit_xor, cubrid bit_count :meta-description: A Bitwise operator performs operations in bits, and can be used in arithmetic operations. :tocdepth: 3 ****************** 비트 함수와 ì—°ì‚°ìž ****************** .. contents:: 비트 ì—°ì‚°ìž =========== 비트 ì—°ì‚°ìž(Bitwise operator)는 비트 단위로 ì—°ì‚°ì„ ìˆ˜í–‰í•˜ë©° ì‚°ìˆ ì—°ì‚°ì‹ì—서 ì´ìš©ë 수 있다. 피연산ìžë¡œ ì •ìˆ˜ íƒ€ìž…ì´ ì§€ì •ë˜ë©°, **BIT** íƒ€ìž…ì€ ì§€ì •ë 수 없다. ì—°ì‚° 결과로 **BIGINT** 타입 ì •ìˆ˜(64비트 ì •ìˆ˜)를 반환한다. ì´ë•Œ, 하나 ì´ìƒì˜ 피연산ìžê°€ **NULL** ì´ë©´ **NULL** ì„ ë°˜í™˜í•œë‹¤. 아래는 CUBRIDê°€ ì§€ì›í•˜ëŠ” 비트 ì—°ì‚°ìžì˜ ì¢…ë¥˜ì— ê´€í•œ 표ì´ë‹¤. **비트 ì—°ì‚°ìž** +----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+----------------+------------------+ | 비트 ì—°ì‚°ìž | 설명 | ì¡°ê±´ì‹ | 리턴 ê°’ | +======================+================================================================================================================================================+================+==================+ | & | 비트 단위로 **AND** ì—°ì‚°ì„ ìˆ˜í–‰í•˜ê³ , **BIGINT** ì •ìˆ˜ë¥¼ 반환한다. | 17 & 3 | 1 | +----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+----------------+------------------+ | \| | 비트 단위로 **OR** ì—°ì‚°ì„ ìˆ˜í–‰í•˜ê³ , **BIGINT** ì •ìˆ˜ë¥¼ 반환한다. | 17 \| 3 | 19 | +----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+----------------+------------------+ | ^ | 비트 단위로 **XOR** ì—°ì‚°ì„ ìˆ˜í–‰í•˜ê³ , **BIGINT** ì •ìˆ˜ë¥¼ 반환한다. | 17 ^ 3 | 18 | +----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+----------------+------------------+ | ~ | ë‹¨í• ì—°ì‚°ìžì´ë©°, 피연산ìžì˜ 비트를 ì—으로 ì „í™˜(**INVERT**)하는 보수 ì—°ì‚°ì„ ìˆ˜í–‰í•˜ê³ , **BIGINT** ì •ìˆ˜ë¥¼ 반환한다. | ~17 | -18 | +----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+----------------+------------------+ | << | 왼쪽 피연산ìžì˜ 비트를 오른쪽 피연산ìžë§Œí¼ 왼쪽으로 ì´ë™ì‹œí‚¤ëŠ” ì—°ì‚°ì„ ìˆ˜í–‰í•˜ê³ , **BIGINT** ì •ìˆ˜ë¥¼ 반환한다. | 17 << 3 | 136 | +----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+----------------+------------------+ | >> | 왼쪽 피연산ìžì˜ 비트를 오른쪽 피연산ìžë§Œí¼ 오른쪽으로 ì´ë™ì‹œí‚¤ëŠ” ì—°ì‚°ì„ ìˆ˜í–‰í•˜ê³ , **BIGINT** ì •ìˆ˜ë¥¼ 반환한다. | 17 >> 3 | 2 | +----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+----------------+------------------+ BIT_AND ======= .. function:: BIT_AND (expr) 집계 함수로서, *expr* ì˜ ëª¨ë“ ë¹„íŠ¸ì— ëŒ€í•´ 비트 단위 **AND** ì—°ì‚°ì„ ìˆ˜í–‰í•œë‹¤. ì¡°ê±´ì ˆì„ ë§Œì¡±í•˜ëŠ” í–‰ì´ ì—†ëŠ” 경우, NULL ì„ ë°˜í™˜í•œë‹¤. :param expr: ì •ìˆ˜ íƒ€ìž…ì˜ ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: BIGINT .. code-block:: sql CREATE TABLE bit_tbl(id int); INSERT INTO bit_tbl VALUES (1), (2), (3), (4), (5); SELECT 1&3&5, BIT_AND(id) FROM bit_tbl WHERE id in(1,3,5); :: 1&3&5 bit_and(id) ============================================ 1 1 BIT_OR ====== .. function:: BIT_OR (expr) 집계 함수로서, *expr* ì˜ ëª¨ë“ ë¹„íŠ¸ì— ëŒ€í•´ 비트 단위 **OR** ì—°ì‚°ì„ ìˆ˜í–‰í•œë‹¤. ì¡°ê±´ì ˆì„ ë§Œì¡±í•˜ëŠ” í–‰ì´ ì—†ëŠ” 경우, **NULL** ì„ ë°˜í™˜í•œë‹¤. :param expr: ì •ìˆ˜ íƒ€ìž…ì˜ ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: BIGINT .. code-block:: sql SELECT 1|3|5, BIT_OR(id) FROM bit_tbl WHERE id in(1,3,5); :: 1|3|5 bit_or(id) ============================================ 7 7 BIT_XOR ======= .. function:: BIT_XOR (expr) 집계 함수로서, *expr* ì˜ ëª¨ë“ ë¹„íŠ¸ì— ëŒ€í•´ 비트 단위 **XOR** ì—°ì‚°ì„ ìˆ˜í–‰í•œë‹¤. ì¡°ê±´ì ˆì„ ë§Œì¡±í•˜ëŠ” í–‰ì´ ì—†ëŠ” 경우, **NULL** ì„ ë°˜í™˜í•œë‹¤. :param expr: ì •ìˆ˜ íƒ€ìž…ì˜ ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: BIGINT .. code-block:: sql SELECT 1^2^3, BIT_XOR(id) FROM bit_tbl WHERE id in(1,3,5); :: 1^3^5 bit_xor(id) ============================================ 7 7 BIT_COUNT ========= .. function:: BIT_COUNT (expr) *expr*\ì˜ ëª¨ë“ ë¹„íŠ¸ 중 1로 ì„¤ì •ëœ ë¹„íŠ¸ì˜ ê°œìˆ˜ë¥¼ 반환하는 함수ì´ë©°, 집계 함수는 아니다. :param expr: ì •ìˆ˜ íƒ€ìž…ì˜ ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: BIGINT .. code-block:: sql SELECT BIT_COUNT(id) FROM bit_tbl WHERE id in(1,3,5); :: bit_count(id) ================ 1 2 2