비트 연산 시뮬레이터(AND・OR・XOR・NOT・시프트)
두 개의 숫자에 대해 AND・OR・XOR・NOT・왼쪽 시프트・오른쪽 시프트를 계산하고, 어떤 비트가 바뀌었는지 2진수 그리드로 시각화합니다. 8/16/32비트를 지원합니다.
사용 팁
- 값은 10진수뿐 아니라 `0x1A`와 같은 16진수, `0b1010`과 같은 2진수 접두사로도 입력할 수 있습니다. 코드에 쓰는 표기 그대로 붙여넣어 테스트할 수 있습니다.
- AND・OR・XOR은 두 개의 값을, NOT은 하나의 값만 사용하는 연산입니다. 연산을 전환하면 입력란 수가 자동으로 바뀝니다.
- 오른쪽 시프트(`>>>`)는 논리 시프트만 지원합니다. 부호 비트를 유지하는 산술 시프트와의 차이는 FAQ를 참고하세요.
- 비트 폭을 8→16→32로 바꾸면 같은 숫자라도 상위 비트의 0 개수가 늘어나는 것을 확인할 수 있어, "비트 폭"의 의미를 이해하는 데 도움이 됩니다.
- 노란색으로 강조된 비트는 연산 전후로 바뀐 자리입니다. AND・OR에서 어느 입력값이 각 자리에서 "이겼는지"를 시각적으로 따라갈 수 있습니다.
자주 묻는 질문
여담 ― 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 마스크의 조합으로 구현할 수 있습니다. 여러 개의 켬/끔 플래그를 하나의 정수로 묶어 관리하는 "비트 플래그" 기법도, 메모리가 제한적이던 옛날 게임이나 시스템 프로그래밍에서 널리 사용되어 왔습니다.