주어진 식을 단계별로 보면:
- 2+577-577-1 = 2 + (577−577) − 1 = 2 + 0 − 1 = 1
- 0+0+0+1 = 1
따라서 원래 식은 “-1 OR 1 = 1” 이 됩니다. 여기서 결론은 “OR”을 어떻게 해석하느냐에 따라 달라집니다.
- 산술/비트 연산(비트 OR, |)로 보면: -1 | 1 = -1 (두의 보수 표기에서 -1은 모든 비트가 1이므로), 따라서 -1 ≠ 1 → 식은 거짓입니다.
- 논리 연산(불리언 OR)으로 “참/거짓” 값만 비교하면: -1과 1 모두 0이 아닌 수이므로 참(True)으로 취급됩니다. 불리언 관점에서 True OR True = True이고, 보통 언어(C 등)의 논리 연산 결과는 1(참)을 나타내므로 (예: -1 || 1 → 1) 이 경우 1 = 1 이 되어 참이 될 수 있습니다.
- 다만 고수준 언어(예: Python, JavaScript)에서의 or 연산은 “첫 번째 참값을 반환”하는 식의 단축평가 동작을 하므로 (-1 or 1)은 -1을 반환합니다. 그러면 (-1 or 1) == 1 은 거짓이 됩니다.
요약: 연산자 OR의 정확한 의미(비트 OR인지, 논리 OR인지, 어떤 언어의 동작인지)를 명확히 해야 합니다.
- 비트 OR로 해석하면 식은 거짓(-1 ≠ 1).
- 논리적 참/거짓 여부만 비교(논리 연산의 결과를 0/1로 표기)하면 참(1 = 1).
정확한 판단을 위해 OR의 의미와 사용하는 언어/문맥을 알려 주세요.
참고자료