비트 연산

하나로 보완

변수 값을 최대 1까지 보완합니다. 수식 값은 변수 값이 0을 포함하는 모든 자릿수에 1을 포함하며 변수가 1을 포함하는 모든 자릿수에 0을 포함합니다.

b = ~n;

예제:

   char a='a',b;
   b=~a;
   Print("a = ",a, "  b = ",b);  
// 결과는 다음과 같습니다:
// a = 97   b = -98

우측 이동

x의 이진 표현은 y 자릿수로 오른쪽으로 이동합니다. 이동할 값이 부호 없는 유형인 경우 논리적 오른쪽 이동이 이루어집니다. 즉, 자유 왼쪽 비트는 0으로 채워집니다.

이동할 값이 부호 유형인 경우 산술 오른쪽 이동이 이루어집니다. 즉, 왼쪽 자유 자리가 부호 비트 값으로 채워집니다(숫자가 양수이면 부호 비트 값은 0이고, 숫자가 음수이면 부호 비트 값은 1입니다).

x = x >> y;

예제:

   char a='a',b='b';
   Print("Before:  a = ",a, "  b = ",b); 
//--- 우측으로 이동
   b=a>>1;
   Print("After:   a = ",a, "  b = ",b); 
// 결과는 다음과 같습니다:
// Before:  a = 97   b = 98
// After:   a = 97   b = 48

좌측 이동

x의 이진 표현은 y 자릿수로 왼쪽으로 이동하며, 오른쪽 자유 자릿수는 0으로 채워집니다.

x = x << y;

예제:

   char a='a',b='b';
   Print("Before:  a = ",a, "  b = ",b); 
//--- 좌측으로 이동
   b=a<<1;
   Print("After:   a = ",a, "  b = ",b); 
// 결과는 다음과 같습니다:
// Before:  a = 97   b = 98
// After:   a = 97   b = -62

이동된 변수의 길이와 같거나 큰 비트 수로 이동하지 않는 것이 좋습니다. 이러한 작업의 결과가 정의되지 않았기 때문입니다.

Bitwise AND 연산

이진 코드 x 및 y 표현의 비트 AND 연산입니다. 식 값은 모든 자릿수에 1(TRUE)을 포함하며, x와 y 모두 0이 아닌 숫자를 포함하며, 다른 모든 자리에는 0(FALSE)을 포함합니다.

b = ((x & y) != 0);

예제:

   char a='a',b='b';
//--- AND 연산
   char c=a&b;
   Print("a = ",a,"  b = ",b);
   Print("a & b = ",c);
// 결과는 다음과 같습니다:
// a = 97   b = 98
// a & b = 96

Bitwise OR 연산

x와 y의 이진 표현의 비트 OR 연산입니다. 식 값은 모든 자릿수에 1을 포함하며, 여기서 x 또는 y는 0을 포함하지 않고 다른 모든 자리에는 0을 포함합니다.

b = x | y;

예제:

   char a='a',b='b';
//--- OR 연산
   char c=a|b;
   Print("a = ",a,"  b = ",b);
   Print("a | b = ",c);
// 결과는 다음과 같습니다:
// a = 97   b = 98
// a | b = 99

Bitwise 전용 연산 OR

x와 y의 이진 표현의 비트 배타적 OR(eXclusive OR) 연산입니다. 식 값은 x와 y의 이진수 값이 서로 다른 모든 자릿수에 1을 포함하며, 다른 모든 자리에는 0을 포함합니다.

b = x ^ y;

예제:

   char a='a', b='b';
//--- 제외 OR 연산
   char c=a^b;
   Print("a = ",a,"  b = ",b);
   Print("a ^ b = ",c);
// 결과는 다음과 같습니다:
// a = 97   b = 98
// a ^ b = 3

비트 연산은 정수로만 수행됩니다.

더 보기

우선 순위 규칙