비트 OR 연산기란?
이 연산기는 두 정수의 비트 OR를 계산합니다. 대부분의 프로그래밍 언어에서는 a | b로 표기하죠. OR 연산은 두 수를 비트 단위로 비교해, 해당 위치의 두 비트 중 하나라도(또는 둘 다) 1이면 결과 비트를 1로, 두 비트가 모두 0일 때만 0으로 만듭니다.
사용 방법
첫 번째 정수(A)와 두 번째 정수(B)를 입력하면 10진수 결과가 나옵니다. 양의 정수와 음의 정수 모두 지원합니다. 입력과 출력은 모두 10진수로 이루어지지만, 내부적으로는 각 값을 2진수 표현으로 처리합니다.
공식 풀이
연산은 OR 진리표에 따라 비트별로 수행됩니다: \(0 \mathbin{|} 0 = 0\), \(0 \mathbin{|} 1 = 1\), \(1 \mathbin{|} 0 = 1\), \(1 \mathbin{|} 1 = 1\). 예를 들어 A = 12, B = 10이라고 해봅시다. 2진수로 12는 1100, 10은 1010입니다. 자릿수를 맞춰 각 열을 OR 하면 1110이 되고, 이는 10진수로 14입니다. 따라서 $$12 \mathbin{|} 10 = 14$$입니다.
예제 풀이
5 | 3을 구한다고 가정해봅시다. 2진수로 5는 101, 3은 011입니다. 각 비트를 OR 하면 \(1 \mathbin{|} 0 = 1\), \(0 \mathbin{|} 1 = 1\), \(1 \mathbin{|} 1 = 1\)이 되어 111 = 7이 됩니다. 연산기는 7을 반환합니다.
일반적인 비트별 OR 값 참조
아래 표는 0부터 8까지의 작은 피연산자의 모든 쌍에 대해 \(A \mathbin{|} B\)를 나타냅니다. A에 대한 행과 B에 대한 열을 읽으면, 셀이 10진수 결과입니다.
| | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 1 | 1 | 1 | 3 | 3 | 5 | 5 | 7 | 7 | 9 |
| 2 | 2 | 3 | 2 | 3 | 6 | 7 | 6 | 7 | 10 |
| 3 | 3 | 3 | 3 | 3 | 7 | 7 | 7 | 7 | 11 |
| 4 | 4 | 5 | 6 | 7 | 4 | 5 | 6 | 7 | 12 |
| 5 | 5 | 5 | 7 | 7 | 5 | 5 | 7 | 7 | 13 |
| 6 | 6 | 7 | 6 | 7 | 6 | 7 | 6 | 7 | 14 |
| 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 15 |
| 8 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 8 |
대각선(A = B인 경우)은 항상 피연산자 자체를 반환합니다. x | x = x이기 때문입니다.
비트별 OR은 권한 플래그를 결합하는 표준 방식입니다. 일반적인 Unix 스타일 권한 비트는 읽기 = 4 (100), 쓰기 = 2 (010), 실행 = 1 (001)입니다:
| 조합 | 표현식 | 10진수 | 이진수 |
|---|---|---|---|
| 읽기 + 쓰기 | 4 | 2 | 6 | 110 |
| 읽기 + 실행 | 4 | 1 | 5 | 101 |
| 쓰기 + 실행 | 2 | 1 | 3 | 011 |
| 읽기 + 쓰기 + 실행 (rwx) | 4 | 2 | 1 | 7 | 111 |
| 두 바이트 병합 | 240 | 15 | 255 | 11111111 |
주요 용어
- 비트
-
디지털 데이터의 가장 작은 단위로,
0또는1의 단일 이진 값을 보유합니다. 8개의 비트 그룹이 바이트를 형성합니다. - 설정 비트 / 설정 해제 비트
-
설정된 비트는 값
1을 가지고 있으며, 설정 해제된 (또는 지워진) 비트는 값0을 가지고 있습니다. 비트별 OR은 다른 비트를 방해하지 않으면서 특정 비트를 설정하는 데 일반적으로 사용됩니다. - 비트마스크
- 비트 패턴이 다른 값의 특정 비트를 선택, 설정 또는 지우도록 선택된 정수입니다. 값을 마스크와 OR-ing하면 마스크에 설정된 모든 비트가 결과에 설정됩니다.
- 플래그
-
개별 비트 (종종 이름이 지정된 상수로 제공됨)로, 켜짐/꺼짐 설정을 나타내는 데 사용됩니다. 여러 플래그는 하나의 정수에 패킹되고 OR으로 결합됩니다. 예:
READ | WRITE. - 2의 보수
-
컴퓨터가 부호 있는 정수를 나타내는 표준 방식입니다. 가장 중요한 비트는 음수 가중치를 가지므로,
n-비트 숫자는 \(-2^{n-1}\)에서 \(2^{n-1}-1\) 범위입니다. 예를 들어, \(-1\)은 모두 1-비트로 저장됩니다. - 가장 중요한 비트 / 가장 덜 중요한 비트 (MSB / LSB)
- MSB는 가장 왼쪽 비트로, 가장 큰 자리수 값을 가지며 (2의 보수에서 부호), LSB는 가장 오른쪽 비트이며, 자리수 값은 \(2^0 = 1\)입니다.
- 10진법 vs 2진법
- 10진법 (십진수)은 숫자 0–9를 사용하는 일상적인 숫자 체계입니다. 2진법 (이진)은 0과 1만 사용하며, 각 위치는 2의 거듭제곱입니다. 비트별 연산은 2진 표현에 대해 작동하지만, 이 계산기는 결과를 10진법으로 표시합니다.
자주 묻는 질문
비트 OR는 덧셈과 같은가요? 아닙니다. OR에는 자리올림이 없습니다. \(1 \mathbin{|} 1\)은 그대로 1이지만, 1+1은 2진수에서 10으로 자리올림됩니다. 두 피연산자에 겹치는 1 비트가 전혀 없을 때만 결과가 같아집니다.
음수는 어떻게 처리되나요? 음의 정수는 2의 보수 표현을 사용하므로, OR 연산도 부호 비트를 포함해 동일한 비트 규칙을 따릅니다.
OR는 어디에 쓰이나요? OR는 특정 비트를 켜거나(set) 플래그 값을 결합할 때 자주 사용됩니다. 예를 들어 권한 마스크를 병합하는 경우가 대표적입니다.