시간/숫자

비트 연산

지정된 비트 폭(8/16/32/64비트)의 정수에 대한 AND/OR/XOR/NAND/NOR/XNOR/NOT 및 시프트 연산, 모든 진법에서.

Bitwise operations work directly on a number's individual bits rather than its value as a whole — the basis for permission flags, network protocols, and low-level optimization.

How to use it

Common uses

Things to keep in mind

The result of NOT and shifts depends on the chosen bit width — the same number gives a different result at 8-bit versus 32-bit width because of the different number of bits involved.

XOR is often used to toggle a flag — applying XOR twice with the same value returns the original.

이 도구에 대한 아티클: 비트 연산: AND, OR, XOR이 비트 수준에서 어떻게 동작하는가

자주 묻는 질문

AND, OR, XOR, NAND, NOR, XNOR, NOT의 차이는 무엇인가요?

AND는 두 비트가 모두 1일 때만 1을 반환하고, OR은 적어도 하나가 1일 때 1을 반환하며, XOR은 비트가 다를 때 1을 반환합니다. NAND/NOR/XNOR은 이들의 부정이며, NOT은 단일 피연산자의 모든 비트를 반전시킵니다.

숫자의 비트 폭과 부호는 어떻게 처리되나요?

8/16/32/64비트 폭을 선택하세요 — 연산과 시프트는 해당 범위 내에서 이루어집니다. 음수는 2의 보수로 표현되므로, 10진 표기법에 익숙하다면 NOT이나 시프트의 결과가 예상과 다르게 보일 수 있습니다.

왼쪽 시프트와 오른쪽 시프트의 차이는 무엇인가요?

왼쪽 시프트(<<)는 오른쪽에 0을 추가하여 실질적으로 시프트 양만큼 2의 거듭제곱을 곱합니다. 오른쪽 시프트는 논리적(왼쪽에 0 추가) 또는 산술적(부호 비트 유지)일 수 있으며, 유형은 선택한 모드에 따라 다릅니다.

"if (a & b == c)" 같은 표현식이 예상과 다르게 동작하는 이유는 무엇인가요?

대부분의 언어에서 비교 연산자 ==는 비트 연산자 &보다 우선순위가 높기 때문에, 이 표현식은 "a & (b == c)"로 계산됩니다. 이를 피하려면 비트 연산에는 항상 괄호를 명시적으로 사용하세요.

개별 불리언 변수 대신 비트 플래그를 사용하는 이유는 무엇인가요?

하나의 숫자에 여러 플래그를 담으면 저장과 전송이 더 간결해지고(예: 네트워크 프로토콜이나 파일 형식), AND/OR/XOR로 특정 플래그를 한 번의 빠른 연산으로 확인하거나 변경할 수 있습니다.

아티클: 시간/숫자

유닉스 시간: 컴퓨터가 1970년부터 시간을 세는 이유

1970년 1월 1일이 대부분의 컴퓨터 시스템에서 시간의 기준점이 된 이유.

Cron 표현식: 작업 일정을 해독하는 방법

*/15 * * * * 같은 표현식을 해독해 작업이 정확히 언제 실행되는지 아는 방법.

진법: 2진법, 8진법, 16진법이 존재하는 이유

CSS에서 색상 #FF5733이 10진수가 아니라 16진수로 표기되는 이유.

날짜 차이: 날짜 세기가 보이는 것보다 까다로운 이유

윤년 때문에 날짜를 단순하게 빼면 잘못된 결과가 나올 수 있는 이유.

나이 계산: 단순히 연도를 빼는 것이 아닌 이유

태어난 연도를 단순히 빼면 실제보다 한 살 많은 나이가 나올 수 있는 이유.

시간대: UTC가 GMT와 같지 않은 이유

UTC는 1년에 두 번 바뀌지 않지만 런던 시간(GMT/BST)은 바뀌는 이유.

기간 계산기: 시, 분, 초를 올바르게 더하는 방법

분과 초를 더할 때 10진법 덧셈과 마찬가지로 나머지를 다음 자리로 "올림"해야 하는 이유.

ISO 8601 Duration: 표준 형식으로 기간을 쓰는 방법

PT1H30M이 "1시간 30분"을 의미하고 "1분 30시간"이 아닌 이유.

주차 번호: 나라마다 주를 세는 방식이 다른 이유

ISO 8601 표준에 따라 1월 1일이 가끔 전년도 52주차나 53주차에 속하는 이유.

로마 숫자: 0과 자릿값이 없는 체계는 어떻게 작동하는가

IV가 6이 아니라 4를 의미하는 이유, 그리고 로마 숫자에서 뺄셈 규칙이 작동하는 방식.

IEEE 754: 코드에서 0.1 + 0.2가 0.3과 같지 않은 이유

거의 모든 프로그래밍 언어에서 0.1 + 0.2가 0.30000000000000004로 나오는 이유.

숫자를 글자로: 숫자를 단어로 바꾸는 이유

은행 문서가 금액을 숫자와 글자로 동시에 쓰는 이유.