Logical operators
Peponi │ 11/18/2024 │ 6m
Logical operators
Peponi
1. Introduction
논리 연산자는 단항 및 이진 논리 연산을 포함한다.
- NOT :
! - AND :
& - OR :
| - XOR :
^ - Conditional AND :
&&- 왼쪽 피연산자가
true일 때만 오른쪽 피연산자를 평가
- 왼쪽 피연산자가
- Conditional OR :
||- 왼쪽 피연산자가
false일 때만 오른쪽 피연산자를 평가
- 왼쪽 피연산자가
2. NOT
단항 논리 연산자 ! 는 피연산자의 부정을 반환한다. 접두사로 사용하며, 접미사로 사용하는 경우 null 허용 연산자가 된다.
Console.WriteLine(!true);
Console.WriteLine(!false);
/* output:
False
True
*/3. AND
& 연산자는 AND 연산을 수행한다. 왼쪽과 오른쪽 피연산자 둘 다 true의 값을 가질 때만 true를 반환한다.
Console.WriteLine(true & true);
Console.WriteLine(true & false);
Console.WriteLine(false & true);
Console.WriteLine(false & false);
/* output:
True
False
False
False
*/& 연산자는 왼쪽 피연산자가 false일 때도 오른쪽 연산자의 값을 확인한다.
bool Right()
{
Console.WriteLine("Right");
return true;
}
bool Left = true;
Console.WriteLine(Left & Right());
Console.WriteLine(!Left & Right());
/* output:
Right
True
Right
False
*/정수 형식 피연산자의 경우 비트 연산을 수행한다.
int A = 0b_1010_1011;
int B = 0b_1101_1101;
int C = A & B;
Console.WriteLine(Convert.ToString(C, 2));
/* output:
10001001
*/4. OR
| 연산자는 OR 연산을 수행한다. 왼쪽 또는 오른쪽 피연산자가 true의 값을 가질 때 true를 반환한다.
Console.WriteLine(true | true);
Console.WriteLine(true | false);
Console.WriteLine(false | true);
Console.WriteLine(false | false);
/* output:
True
True
True
False
*/| 연산자는 왼쪽 피연산자가 true일 때도 오른쪽 연산자의 값을 확인한다.
bool Right()
{
Console.WriteLine("Right");
return true;
}
bool Left = false;
Console.WriteLine(Left | Right());
Console.WriteLine(!Left | Right());
/* output:
Right
True
Right
True
*/정수 형식 피연산자의 경우 비트 연산을 수행한다.
int A = 0b_1010_1011;
int B = 0b_1101_1101;
int C = A | B;
Console.WriteLine(Convert.ToString(C, 2));
/* output:
11111111
*/5. XOR
^ 연산자는 XOR 연산을 수행한다. 왼쪽과 오른쪽 피연산자의 값이 다를 때 true를 반환한다.
Console.WriteLine(true ^ true);
Console.WriteLine(true ^ false);
Console.WriteLine(false ^ true);
Console.WriteLine(false ^ false);
/* output:
False
True
True
False
*/정수 형식 피연산자의 경우 비트 연산을 수행한다.
int A = 0b_1010_1011;
int B = 0b_1101_1101;
int C = A ^ B; // 0b_0111_0110
Console.WriteLine(Convert.ToString(C, 2));
/* output:
1110110
*/6. Conditional AND
&& 연산자는 AND 연산을 수행한다. 왼쪽과 오른쪽 피연산자 둘 다 true의 값을 가질 때만 true를 반환한다.
Console.WriteLine(true && true);
Console.WriteLine(true && false);
Console.WriteLine(false && true);
Console.WriteLine(false && false);
/* output:
True
False
False
False
*/왼쪽 피연산자가 false일 때는 오른쪽 연산자의 값을 확인하지 않는다.
bool Right()
{
Console.WriteLine("Right");
return true;
}
bool Left = true;
Console.WriteLine(Left && Right());
Console.WriteLine(!Left && Right());
/* output:
Right
True
False
*/7. Conditional OR
|| 연산자는 OR 연산을 수행한다. 왼쪽 또는 오른쪽 피연산자가 true의 값을 가질 때 true를 반환한다.
Console.WriteLine(true || true);
Console.WriteLine(true || false);
Console.WriteLine(false || true);
Console.WriteLine(false || false);
/* output:
True
True
True
False
*/왼쪽 피연산자가 true일 때는 오른쪽 연산자의 값을 확인하지 않는다.
bool Right()
{
Console.WriteLine("Right");
return true;
}
bool Left = false;
Console.WriteLine(Left || Right());
Console.WriteLine(!Left || Right());
/* output:
Right
True
True
*/8. Nullable bool
bool? 피연산자의 경우 !, &, |, ^를 지원하지만 &&, || 연산자는 지원하지 않는다. bool? 피연산자의 연산 결과는 bool과 다르게 나타난다. 아래는 bool? 피연산자의 연산 결과이다.
| X | Y | !X | X & Y | X | Y | X ^ Y |
|---|---|---|---|---|---|
| true | true | false | true | true | false |
| true | false | false | true | true | |
| true | null | null | true | null | |
| false | true | true | false | true | true |
| false | false | false | false | false | |
| false | null | false | null | null | |
| null | true | null | null | true | null |
| null | false | false | null | null | |
| null | null | null | null | null |
9. 할당 연산자
할당 연산자 &=, |=, ^= 는 연산과 동시에 할당이 가능해지는 복합 할당 식을 가능하게 한다. 예로, 다음 두 식은 동일한 연산을 수행한다.
bool X = true;
X = X & false;
X &= false;할당 연산자는 다음과 같이 사용한다.
bool AND = true;
bool OR = true;
bool XOR = true;
AND &= false;
OR |= false;
XOR ^= false;
Console.WriteLine(AND);
Console.WriteLine(OR);
Console.WriteLine(XOR);
/* output:
False
True
True
*/