/****************************************************************
* 논리 연산자
****************************************************************/
// <논리 연산자>
bValue = !false; // !(Not) : 피연산자의 논리 부정을 반환
bValue = true && false; // &&(And) : 두 피연산자가 모두 true 일 경우 true
bValue = true || false; // ||(Or) : 두 피연산자가 모두 false 일 경우 false
bValue = true ^ false; // ^(Xor) : 두 피연산자가 다를 경우 true
// <조건부 논리 연산자>
// 조건부 논리 And 연산자 &&
// 빠른 계산을 위해 false && x(논리자료형) 의 경우 어떠한 논리자료형이 있어도
// 결과는 항상 false이기 때문에 false && x 에서 x는 무시하게 됨
iValue = 10;
bValue = false && (++iValue > 5); // 뒤에 부분은 때때로 무시된다
Console.WriteLine(iValue); // output : 10
// 조건부 논리 Or 연산자 ||
// 빠른 계산을 위해 true || x(논리자료형) 의 경우 어떠한 논리자료형이 있어도
// 결과는 항상 true이기 때문에 true || x 에서 x는 무시하게 됨
iValue = 10;
bValue = true || (++iValue > 5);
Console.WriteLine(iValue); // output : 10
/****************************************************************
* 비트 연산자
****************************************************************/
// <단항 연산자>
iValue = ~0x35; // ~(비트 보수) : 데이터를 비트단위로 보수 연산 (보수 : 0->1, 1->0)
// <이진 연산자>
iValue = 0x11 & 0x83; // &(And) : 데이터를 비트단위로 And 연산
iValue = 0x11 | 0x83; // |(Or) : 데이터를 비트단위로 Or 연산
iValue = 0x11 ^ 0x83; // ^(Xor) : 데이터를 비트단위로 Xor 연산
// <비트 쉬프트 연산자>
iValue = 0x20 << 2; // << : 왼쪽의 피연산자의 비트를 오른쪽 피연산자만큼 왼쪽으로 이동
iValue = 0x20 >> 2; // >> : 왼쪽의 피연산자의 비트를 오른쪽 피연산자만큼 오른쪽으로 이동
- 예시 : 유니티 레이어마스크를 나누어 사용할때 최적화적 문제로 비트 쉬프트 연산자를 사용하기도 한다.
'개발관련공부자료' 카테고리의 다른 글
객체지향 프로그래밍 (0) | 2023.09.22 |
---|---|
메모리 구조 (0) | 2023.09.22 |
클래스 (Class) (0) | 2023.09.22 |
함수(Function) (0) | 2023.09.22 |
자료형(Data Type) (0) | 2023.09.22 |