1. 연산자: ~ & ^ |
2. 형 식: ~ operand1
operand1 & operand2
operand1 ^ operand2
operand1 | operand2
3. 설 명: 프로그래밍언어에서 정수나 실수는 모두 2진수로 변환되어 기억되는데
(예외도 있으나 Wel이나 C언어는 모두 2진수로 변환됨) 이렇게 기억된
2진수에 대하여 각 비트별로 연산을 할 수 있는 것이 Bit 연산자이다.
모든 Bit 연산자는 피연산자가 실수(소수 아래가 있는 수)일 경우에 정
수로 변환(소수 아래 절삭)하여 처리한다.
Bit 연산자를 접할 때에는 피연산자에 대한 2진 수치를 생각하지
않으면 어떤 결과를 얻을 것인지 알기 어렵다.
~ 기호는 Bit NOT , & 는 Bit AND , ^ 는 Bit EOR , | 는 Bit OR 이다.
1) Bit 연산자의 연산 순위
연산 순서의 높은 순에서 낮은 순으로 열거하면 ~ , & , ^ , | 순서이다.
2) Bit NOT (~)
-. 피연산자의 각 비트를 0은 1로 1은 0으로 변환한다.
<예제>
char a, b; // 1byte의 기억공간을 확보
a= 5; // 2진수로 기억된 형태: 0000 0101
b= ~a; // 2진수로 기억된 형태: 1111 1010
print(b); // 출력결과는 250 (2진수로 변환하면: 1111 1010임)
3) Bit AND (&)
-. 두 피연산자의 해당 Bit의 값이 모두 1일때 결과값이 1이 된다.
<예제>
char a, b, c; // 1byte의 기억공간을 확보
double d, e, f;
a= 5; // 2진수로 기억된 형태: 0000 0101
b= 14; // 2진수로 기억된 형태: 0000 1110
c= a & b; // 2진수로 기억된 형태: 0000 0100
print(c); // 출력결과는 4 (2진수로 변환하면: 0000 0100임)
d= 13.3;
e= 11.3;
f= d & e; // d 와 e 의 값이 정수로 변환되어 13 & 11의 결과를 얻는다.
print(f); // 9가 출력됨( 1101 & 1011 = 1001 )
4) Bit OR (|)
-. 두 피연산자의 해당 Bit의 값이 모두 0이 아니면 결과값이 1이 된다.
즉, 둘 중의 하나가 1이면 결과는 1이 된다.(논리 연산자 참조)
<예제>
char a, b, c; // 1byte의 기억공간을 확보
a= 5; // 2진수로 기억된 형태: 0000 0101
b= 14; // 2진수로 기억된 형태: 0000 1110
c= a | b; // 2진수로 기억된 형태: 0000 1111
print(c); // 출력결과는 15 (2진수로 변환하면: 0000 1111임)
5) Bit EOR (^) : 배타적(exclusive) OR
-. 두 피연산자의 해당 Bit의 값이 서로 다르면 결과값이 1이 된다.
즉, 한쪽이 1이고 다른 한쪽이 0 이면 결과값이 1이 된다.
<예제>
char a, b, c; // 1byte의 기억공간을 확보
a= 5; // 2진수로 기억된 형태: 0000 0101
b= 14; // 2진수로 기억된 형태: 0000 1110
c= a ^ b; // 2진수로 기억된 형태: 0000 1011
print(c); // 출력결과는 11 (2진수로 변환하면: 0000 1011임)
|