비트 연산 시뮬레이터(AND・OR・XOR・NOT・시프트)

두 개의 숫자에 대해 AND・OR・XOR・NOT・왼쪽 시프트・오른쪽 시프트를 계산하고, 어떤 비트가 바뀌었는지 2진수 그리드로 시각화합니다. 8/16/32비트를 지원합니다.

비트 연산이란

비트 연산이란 숫자를 0과 1로 이루어진 2진수 자릿값의 나열로 다루고, 그 자리마다 논리 연산을 수행하는 계산 방식을 말합니다. AND・OR・XOR・NOT・시프트(왼쪽/오른쪽)가 대표적인 다섯 가지 연산이며, 모두 CPU가 하드웨어 차원에서 직접 실행하는 기본 명령이기 때문에 사칙연산보다 훨씬 빠르게 처리됩니다. 프로그래밍 언어에서는 흔히 `&`・`|`・`^`・`~`・`<<`・`>>` 기호로 표기되며, 플래그 관리・권한 설계・암호화・이미지 처리 등 폭넓은 분야에서 활용됩니다.

이 도구에서는 값 A와 값 B(NOT 연산에서는 값 A만 사용), 그리고 비트 폭(8/16/32비트)을 지정하면 연산 결과를 자리별로 그리드에 시각화해 보여줍니다. 값은 10진수뿐 아니라 `0x`(16진수)・`0b`(2진수) 접두사로도 입력할 수 있어 실제 코드의 표기 그대로 확인할 수 있습니다. 선택한 비트 폭을 넘어서는 값은 올바르게 표현되지 않으므로, 먼저 비트 폭을 정해 두면 결과를 이해하기가 훨씬 쉬워집니다.

비트 연산 시뮬레이터 사용법

  1. 비트 폭을 선택합니다 8/16/32비트 중에서 고릅니다. 처음이라면 변화를 눈으로 확인하기 쉬운 8비트부터 시작하는 것을 권장합니다.
  2. 연산 종류를 선택합니다 AND・OR・XOR・NOT・왼쪽 시프트・오른쪽 시프트 중에서 고릅니다. NOT을 선택하면 입력란이 값 A 하나로 자동 전환됩니다.
  3. 값을 입력합니다 값 A(NOT 이외에는 값 B도)를 10진수 또는 `0x`・`0b` 접두사로 입력합니다. 시프트 연산에서는 시프트할 비트 수도 함께 지정합니다.
  4. 결과 그리드를 확인합니다 입력과 동시에 자동으로 계산되며, 노란색으로 강조된 자리가 값 A에서 바뀐 비트입니다.
  5. 10진수・16진수 표기를 비교합니다 결과 행 아래에 표시되는 10진수・16진수 값을 통해 2진수 결과가 실제로 어떤 수치에 대응하는지 확인합니다.

더 잘 활용하기 위한 팁

  • 값은 10진수뿐 아니라 `0x1A`와 같은 16진수, `0b1010`과 같은 2진수 접두사로도 입력할 수 있습니다. 코드에 쓰는 표기 그대로 붙여넣어 테스트할 수 있습니다.
  • AND・OR・XOR은 두 개의 값을, NOT은 하나의 값만 사용하는 연산입니다. 연산을 전환하면 입력란 수가 자동으로 바뀝니다.
  • 오른쪽 시프트(`>>>`)는 논리 시프트만 지원합니다. 부호 비트를 유지하는 산술 시프트와의 차이는 FAQ를 참고하세요.
  • 비트 폭을 8→16→32로 바꾸면 같은 숫자라도 상위 비트의 0 개수가 늘어나는 것을 확인할 수 있어, "비트 폭"의 의미를 이해하는 데 도움이 됩니다.
  • 노란색으로 강조된 비트는 연산 전후로 바뀐 자리입니다. AND・OR에서 어느 입력값이 각 자리에서 "이겼는지"를 시각적으로 따라갈 수 있습니다.

활용 시나리오

프로그래밍 학습·비트 연산자 검증

C・Java・Python 등에서 배우는 AND・OR・XOR・NOT・시프트 연산자를 직접 계산해 보며 이해할 수 있습니다. 특히 NOT과 시프트는 암산으로 결과를 예측하기 어려워, 시각적으로 확인하면 학습 효과가 큽니다.

비트 플래그·권한 설계 검토

유닉스 파일 권한처럼 여러 개의 켬/끔 상태를 하나의 정수에 담는 설계에서, 특정 비트만 추출하는 AND 마스킹이나 비트를 켜는 OR 연산을 실제 값으로 미리 시험해 볼 수 있습니다.

알고리즘 대회·비트마스크 알고리즘 검증

비트마스크 DP나 집합을 정수로 표현하는 기법을 사용할 때, 작은 값으로 먼저 계산 결과를 검증해 로직의 오류를 미리 잡아낼 수 있습니다.

16진수·2진수 변환 확인

연산과 동시에 10진수・16진수 표기를 함께 확인할 수 있어, 진법 변환 도구와 조합해 값이 올바르게 변환되었는지 점검하는 용도로도 사용할 수 있습니다.

색상 코드·네트워크 주소 계산

RGB 색상 코드에서 각 색상 성분을 추출하거나, IP 주소와 서브넷 마스크의 AND 연산 결과를 확인하는 등 네트워크·그래픽 분야의 계산에도 활용할 수 있습니다.

비트 연산 용어집

AND(논리곱)
두 비트가 모두 1일 때만 결과가 1이 되는 연산입니다. 특정 비트만 남기고 나머지를 지우는 마스킹 처리에 자주 사용됩니다.
OR(논리합)
두 비트 중 하나라도 1이면 결과가 1이 되는 연산입니다. 특정 비트를 켜는(1로 만드는) 용도로 사용됩니다.
XOR(배타적 논리합)
두 비트가 서로 다를 때만 결과가 1이 되는 연산입니다. 비트를 반전시키거나 두 값을 교환하고, 두 값의 차이를 검출하는 데 사용됩니다.
NOT(부정)
하나의 값에 대해 모든 비트를 반전시키는 연산입니다. 결과는 선택한 비트 폭에 따라 표현이 달라집니다.
시프트 연산
비트 패턴 전체를 왼쪽 또는 오른쪽으로 이동시키는 연산입니다. 왼쪽 시프트는 2의 거듭제곱을 곱하는 것과 같고, 오른쪽 시프트는 2로 나누는 것과 같은 효과를 냅니다.
비트마스크
AND나 OR 연산과 함께 사용해 값에서 특정 비트만 추출하거나 변경하기 위한 값입니다. 예를 들어 `0b00001111`은 하위 4비트만 추출하는 비트마스크입니다.
비트 폭
값을 표현하는 데 사용하는 비트 수입니다. 8비트라면 0부터 255까지, 16비트라면 0부터 65535까지의 값을 표현할 수 있습니다.
2진수·16진수 표기
2진수는 0과 1만으로, 16진수는 0부터 9와 A부터 F까지의 문자로 값을 표현하는 방식입니다. 16진수는 2진수 네 자리를 한 문자로 압축해 표기할 때 자주 사용됩니다.

자주 묻는 질문

있습니다. 논리 시프트(`>>>`)는 비게 되는 상위 비트를 항상 0으로 채우는 반면, 산술 시프트(`>>`)는 부호 비트(최상위 비트)를 그대로 복사해 채웁니다. 이 도구는 값을 선택한 비트 폭 내의 음이 아닌 정수로 다루기 때문에 부호 자체가 주된 목적이 아니어서, 이해하기 쉬운 논리 시프트만 제공합니다.

JavaScript의 비트 연산자는 내부적으로 32비트 부호 있는 정수로 계산하기 때문에, 예를 들어 8비트 `00000001`(1)에 NOT을 적용하면 보통 `-2`라는 음수가 됩니다. 이 도구는 선택한 비트 폭(8/16/32)으로 결과를 다시 마스킹하므로, 8비트라면 `11111110`(254)처럼 해당 비트 폭 안에서의 올바른 표현을 보여줍니다.

AND는 두 비트가 모두 1일 때만 1이 되는 연산으로, 특정 비트만 추출하는 마스킹 처리에 자주 쓰입니다. OR는 둘 중 하나라도 1이면 1이 되는 연산으로, 특정 비트를 켜는 데 쓰입니다. XOR은 두 비트가 서로 다를 때만 1이 되는 연산으로, 비트를 반전시키거나 두 값을 교환하는 데 사용됩니다.

왼쪽 시프트(`<<`)는 2의 거듭제곱(2배・4배 등)을 빠르게 곱하는 방법으로, 오른쪽 시프트(이 도구에서는 논리 시프트)는 2로 나누거나 값에서 특정 범위의 비트를 추출하는 데 자주 사용됩니다. 두 연산 모두 알고리즘 대회나 비트마스크 기반 알고리즘에서 자주 등장합니다.

엄밀히는 다른 개념입니다. 비트 연산은 AND・OR・XOR・NOT・시프트라는 연산 자체를 가리키고, 비트마스크는 그 연산(특히 AND나 OR)과 함께 사용해 "특정 비트만 추출하거나 변경"하기 위한 값을 가리킵니다. 예를 들어 `value & 0b00001111`은 하위 4비트만 추출하는 대표적인 비트마스크입니다.
툴군

여담 ― XOR의 신기한 성질과 실제 활용

비트 연산은 컴퓨터의 논리 회로에 그대로 대응하는 가장 기본적인 연산으로, CPU가 단 한 클록만에 실행할 수 있을 만큼 빠릅니다. 사칙연산보다 훨씬 단순한 구조로 구현할 수 있기 때문에, 성능이 중요한 분야(이미지 처리・암호화・네트워크 프로토콜 구현 등)에서는 곱셈이나 나눗셈 대신 비트 연산으로 동등한 처리를 하는 기법이 오래전부터 쓰여 왔습니다.

XOR(배타적 논리합)에는 흥미로운 성질이 있습니다. 같은 값끼리 XOR하면 항상 0이 되고(`a ^ a = 0`), 0과 XOR하면 원래 값이 그대로 나옵니다(`a ^ 0 = a`). 이 두 성질을 이용하면 임시 변수 없이 두 변수의 값을 교환하는 "XOR 스왑"이라는 고전적인 기법이 성립합니다(`a ^= b; b ^= a; a ^= b;`). 오늘날에는 가독성 때문에 실무에서는 잘 권장되지 않지만, 비트 연산의 성질을 배우는 소재로 지금도 자주 인용됩니다.

비트마스크는 실무에서도 폭넓게 사용됩니다. 유닉스의 파일 권한(읽기 4・쓰기 2・실행 1의 조합)은 그 자체로 비트 OR와 AND이며, RGB 색상 코드 `#FF0000`에서 빨강・초록・파랑 성분을 추출하는 처리도 오른쪽 시프트와 AND 마스크의 조합으로 구현할 수 있습니다. 여러 개의 켬/끔 플래그를 하나의 정수로 묶어 관리하는 "비트 플래그" 기법도, 메모리가 제한적이던 옛날 게임이나 시스템 프로그래밍에서 널리 사용되어 왔습니다.