비트 연산 시뮬레이터(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진수) 접두사로도 입력할 수 있어 실제 코드의 표기 그대로 확인할 수 있습니다. 선택한 비트 폭을 넘어서는 값은 올바르게 표현되지 않으므로, 먼저 비트 폭을 정해 두면 결과를 이해하기가 훨씬 쉬워집니다.
비트 연산 시뮬레이터 사용법
- 비트 폭을 선택합니다 8/16/32비트 중에서 고릅니다. 처음이라면 변화를 눈으로 확인하기 쉬운 8비트부터 시작하는 것을 권장합니다.
- 연산 종류를 선택합니다 AND・OR・XOR・NOT・왼쪽 시프트・오른쪽 시프트 중에서 고릅니다. NOT을 선택하면 입력란이 값 A 하나로 자동 전환됩니다.
- 값을 입력합니다 값 A(NOT 이외에는 값 B도)를 10진수 또는 `0x`・`0b` 접두사로 입력합니다. 시프트 연산에서는 시프트할 비트 수도 함께 지정합니다.
- 결과 그리드를 확인합니다 입력과 동시에 자동으로 계산되며, 노란색으로 강조된 자리가 값 A에서 바뀐 비트입니다.
- 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진수 네 자리를 한 문자로 압축해 표기할 때 자주 사용됩니다.
자주 묻는 질문
여담 ― 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 마스크의 조합으로 구현할 수 있습니다. 여러 개의 켬/끔 플래그를 하나의 정수로 묶어 관리하는 "비트 플래그" 기법도, 메모리가 제한적이던 옛날 게임이나 시스템 프로그래밍에서 널리 사용되어 왔습니다.