산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C 비트 연산자 마스터: AND, OR, XOR, 시프트, 컴플리먼트

비트 연산자(Bitwise Operators)란?

비트 연산자는 정수 값의 개별 비트를 조작합니다. 정수 전체에서 작동하는 산술 연산자와 달리, 비트 연산자는 이진 표현에 작용하므로 플래그, 비트 마스크, 저수준 장치 제어 같은 성능 중요 작업에 이상적입니다.

C에서 사용 가능한 비트 연산자:

연산자의미
&비트 AND
|비트 OR
^비트 XOR (배타적 OR)
~비트 NOT (1의 보수)
<<왼쪽 시프트
>>오른쪽 시프트

비트 연산자는 정수 타입에만 정의되며 float나 double 같은 부동소수점 타입에는 적용 불가.

연산은 최하위 비트(LSB)에서 시작해 최상위 비트(MSB)로 진행합니다. 다음 진리표는 이진 결과를 요약합니다:

피연산자 x피연산자 yx & yx | yx ^ y
00000
01011
10011
11110

다음 섹션에서 각 연산자를 예제와 함께 자세히 다룹니다.

비트 AND (&)

AND 연산자는 두 해당 비트가 모두 1일 때만 1 반환, 그렇지 않으면 0. 원치 않는 비트 마스킹에 흔히 사용.

 Op1 = 0000 1101
Op2 = 0001 1001
Result = 0000 1001

비트 OR (|)

OR 연산자는 두 비트 중 적어도 하나가 1이면 1 반환. 특정 비트 설정에 유용.

 Op1 = 0000 1101
Op2 = 0001 1001
Result = 0001 1101

비트 XOR (^)

XOR 연산자는 비트가 다를 때만 1 반환. 비트 토글에 편리.

 Op1 = 0000 1101
Op2 = 0001 1001
Result = 0001 0100

예제 프로그램:

#include <stdio.h>
int main() {
    int a = 20; /* 20 = 010100 */
    int b = 21; /* 21 = 010101 */
    int c = 0;
    c = a & b; /* 20 = 010100 */
    printf("AND - c = %d\n", c);
    c = a | b; /* 21 = 010101 */
    printf("OR - c = %d\n", c);
    c = a ^ b; /* 1 = 000001 */
    printf("XOR - c = %d\n", c);
    return 0;
}

출력:

AND - c = 20
OR - c = 21
XOR - c = 1

비트 시프트 연산자(<<, >>)

시프트 연산자는 비트를 지정된 횟수만큼 왼쪽 또는 오른쪽으로 이동.

4비트 숫자 1111 예시:

x << 2 → 1100
x >> 2 → 0011

프로그램 예시:

#include <stdio.h>
int main() {
    int a = 20; /* 20 = 010100 */
    int c = 0;
    c = a << 2; /* 80 = 101000 */
    printf("Left shift - c = %d\n", c);
    c = a >> 2; /* 5 = 000101 */
    printf("Right shift - c = %d\n", c);
    return 0;
}

출력:

Left shift - c = 80
Right shift - c = 5

비트 컴플리먼트(~)

컴플리먼트 연산자는 모든 비트 반전: 1→0, 0→1. 단일 피연산자에 적용되는 단항 연산자.

0000 1111 → 1111 0000

예제 프로그램:

#include <stdio.h>
int main() {
    int a = 10; /* 10 = 001010 */
    int c = ~a; /* 2의 보수로 -11 */
    printf("Complement - c = %d\n", c);
    return 0;
}

출력:

Complement - c = -11

모든 연산자 종합 예제

아래는 논의된 모든 비트 연산자를 보여주는 간결한 프로그램입니다.

#include <stdio.h>
int main() {
    unsigned int x = 48; /* 0011 0000 */
    unsigned int y = 13; /* 0000 1101 */
    int z = 0;
    z = x & y; /* 0 = 0000 0000 */
    printf("AND - x & y = %d\n", z);
    z = x | y; /* 61 = 0011 1101 */
    printf("OR - x | y = %d\n", z);
    z = x ^ y; /* 61 = 0011 1101 */
    printf("XOR - x ^ y = %d\n", z);
    z = ~x; /* -49 = 1111 0100 (2의 보수) */
    printf("NOT - ~x = %d\n", z);
    z = x << 2; /* 192 = 1100 0000 */
    printf("Left shift - x << 2 = %d\n", z);
    z = x >> 2; /* 12 = 0000 1100 */
    printf("Right shift - x >> 2 = %d\n", z);
    return 0;
}

결과:

AND - x & y = 0
OR - x | y = 61
XOR - x ^ y = 61
NOT - ~x = -49
Left shift - x << 2 = 192
Right shift - x >> 2 = 12

핵심 요약

C 언어

  1. C# 클래스와 객체: 견고한 OOP를 위한 기초 다지기
  2. C# 추상 클래스와 추상 메서드: 실전 가이드
  3. C# partial 클래스와 partial 메서드 이해하기
  4. C# sealed 클래스와 메서드: 상속/오버라이딩 제한으로 코드 안전성·성능 높이기
  5. C++ 연산자 마스터하기: 유형별 완벽 가이드와 실전 예제
  6. C 키워드와 식별자: 실전 가이드
  7. C 프로그래밍 연산자 완벽 가이드
  8. IoT와 블록체인: 데이터 신뢰와 효율성의 패러다임 전환
  9. C++ 연산자 총정리: 종류, 예제, 샘플 프로그램
  10. Python 연산자 종합 가이드: 산술, 논리, 비교, 대입, 비트wise, 우선순위