결론부터 말하면 아니요. 자바스크립트에서 단일 & 기호는 논리 연산자가 아니라 비트 AND(bitwise AND) 연산자입니다. 비트 AND 연산은 두 입력 비트가 모두 1일 때만 결과로 1을 반환하고, 그 외의 경우에는 0을 반환합니다.
예제 코드
var firstValue = 5; var secondValue = 4; var result = firstValue & secondValue; console.log(result);
위 프로그램을 실행하려면 다음과 같은 명령어를 사용합니다.
node fileName.js
여기서는 파일 이름이 demo172.js라고 가정하겠습니다.
출력 결과
실행하면 다음과 같은 출력을 확인할 수 있습니다.
PS C:\Users\Amit\javascript-code> node demo172.js 4
동작 원리: 이진수 계산 과정
숫자 5의 이진수 표현은 101, 숫자 4의 이진수 표현은 100입니다. 두 수를 비트 단위로 AND 연산하면 다음과 같습니다.
5 = 1 0 1
4 = & 1 0 0
--------------------
1 0 0 → 다시 4가 됩니다.
--------------------
각 자릿수를 비교해 보면, 양쪽 비트가 모두 1인 경우(마지막 자리)만 1이 되고 나머지 자리는 0이 됩니다. 그 결과 이진수 100, 즉 십진수 4가 출력되는 것입니다.
&와 &&의 차이점
참고로 자바스크립트에서 논리 AND 연산에 사용되는 것은 &&(더블 앰퍼샌드)입니다. &&는 조건문에서 두 표현식이 모두 참일 때 true를 반환하는 반면, &는 피연산자를 이진수로 변환한 뒤 각 비트끼리 AND 연산을 수행합니다. 따라서 조건 판단에는 &&를, 비트 수준의 조작에는 &를 사용하는 것이 올바른 방법입니다.