위의 이미지로 모든 설명이 다 되긴한다.
과거 디지털 공학 수업을 청강 하였을 때 공부한 적이 있었다. 회로에 관한 개념이었는데 Software에서 보다니 새삼 감회가 새로웠다.
AND 연산자 (&)
- 두 비트가 모두 1일 때만 1을 반환한다.
- 예: 5 & 3 → 1
OR 연산자 (|)
- 두 비트 중 하나라도 1이면 1을 반환한다.
- 예: 5 | 3 → 7
XOR 연산자 (^)
- 두 비트가 서로 다를 때 1을 반환한다.
- 예: 5 ^ 3 → 6
NOT 연산자 (~)
- 단항 연산자로, 비트를 반전시킨다. 1을 0으로, 0을 1로 만든다.
- 예: ~5 → -6 (2의 보수 표기법으로 인해 반전된 결과가 음수로 나온다.)
왼쪽 시프트 연산자 (<<)
- 비트를 왼쪽으로 이동시키며, 오른쪽 빈 공간에 0을 채운다. 이동할 때마다 값이 2배가 된다.
- 예: 5 << 1 → 10 (2진수로 0101 → 1010)
오른쪽 시프트 연산자 (>>)
- 비트를 오른쪽으로 이동시키며, 왼쪽 빈 공간은 부호 비트(가장 왼쪽 비트)로 채운다. 음수인 경우에는 1, 양수인 경우에는 0으로 채운다.
- 예: 5 >> 1 → 2 (2진수로 0101 → 0010)
- 음수 예: -5 >> 1 → -3
부호 없는 오른쪽 시프트 연산자 (>>>)
- 비트를 오른쪽으로 이동시키며, 빈 공간은 항상 0으로 채웁니다. 부호와 상관없이 모든 비트가 오른쪽으로 이동
- 예: 5 >>> 1 → 2
- 예: -5 >>> 1 → 큰 양수 값이 나옴 (음수의 이진수를 0으로 채우기 때문에)
요약
- AND (&): 둘 다 1일 때만 1
- OR (|): 둘 중 하나라도 1이면 1
- XOR (^): 다를 때 1
- NOT (~): 비트 반전
- 왼쪽 시프트 (<<): 비트를 왼쪽으로 이동, 값이 2배씩 증가
- 오른쪽 시프트 (>>): 부호를 유지하면서 비트를 오른쪽으로 이동
- 부호 없는 오른쪽 시프트 (>>>): 항상 0을 채우며 비트를 오른쪽으로 이동
'CS' 카테고리의 다른 글
DNS와 그 작동원리 (1) | 2024.09.27 |
---|---|
인터넷의 작동 원리 (2) | 2024.09.27 |
자바 버전별 차이 (LTS) (0) | 2024.06.18 |
MySql과 MariaDB의 차이 (0) | 2024.06.17 |
온프레미스 & 클라우드 네이티브 아키텍쳐 (1) | 2024.06.09 |