주어진 식: -1 OR 2+136-136-1 = 0+0+0+1
먼저 중간 계산:
- 2+136-136-1 = 1
- 0+0+0+1 = 1
따라서 식은 다음과 같이 정리됩니다:
-1 OR 1 = 1
여기서 OR의 의미에 따라 결과가 달라집니다.
- OR를 비트연산자(|)로 해석한 경우
- 정수의 비트 OR 연산에서 -1은 이진에서 모든 비트가 1인 값(2의 보수 표현)입니다. 따라서 -1 | 1 = -1입니다.
- 따라서 비교 -1 = 1 은 거짓(false)입니다.
- OR를 논리 연산자(||)로 해석한 경우
- 대부분의 언어에서 0이 아닌 정수는 참(truthy)으로 간주됩니다. -1과 1 모두 참이므로 (참 || 참) = 참이 됩니다.
- 참을 정수 1로 본다면 참 = 1 이 되어, 식은 참(=1)과 1의 비교에서 참이 됩니다.
요약:
- OR를 비트연산(|)로 본다면 식은 거짓입니다.
- OR를 논리연산(||)로 본다면 식은 참입니다.
참고 자료: