Javascript/이론
[JS] 비트 연산자 - "&", "|", "^", "~", "<<", ">>", ">>>"
OnnJE
2022. 12. 14. 13:35
반응형
1. a & b (AND)
2진법 표기에서 a, b 각 자리에서 모두 1일 경우 해당 자리수에 1 반환
const a = 5; // 00000000000000000000000000000101
const b = 3; // 00000000000000000000000000000011
console.log(a & b); // 00000000000000000000000000000001
2. a | b (OR)
2진법 표기에서 각 피연산자에서의 비트 자리에 1이 존재하는 경우 해당 자리에 1 반환
const a = 5; // 00000000000000000000000000000101
const b = 3; // 00000000000000000000000000000011
console.log(a | b); // 00000000000000000000000000000111
3. a ^ b (XOR)
2진법 표기에서 각 피연산자의 자리수의 값이 동일한 경우 0을, 그 외의 경우 1을 반환
const a = 5; // 00000000000000000000000000000101
const b = 3; // 00000000000000000000000000000011
console.log(a ^ b); // 00000000000000000000000000000110
4. ~ (NOT)
2진법 표기에서 피연산자의 각 자리에 NOT연산을 적용한다.
const a = 5; // 00000000000000000000000000000101
const b = -3; // 11111111111111111111111111111101
console.log(~a); // 11111111111111111111111111111010
console.log(~b); // 00000000000000000000000000000010
5. a << b (LEFT SHIFT)
2진법 표기에서 a 를 b 비트 만큼 왼쪽으로 이동. 범위를 초과한 비트를 삭제되며 오른쪽에서 0이 채워진다.
const a = 5; // 00000000000000000000000000000101
const b = 2; // 00000000000000000000000000000010
console.log(a << b); // 00000000000000000000000000010100
6. >> (RIGHT SHIFT)
2진법 표기에서 a 를 b 비트만큼 오른쪽으로 이동. 우측으로 범위를 초과한 비트는 삭제되며, 좌측에서는 맨 왼쪽 비트의 복사본이 채워진다.
const a = 5; // 00000000000000000000000000000101
const b = 2; // 00000000000000000000000000000010
const c = -5; // 11111111111111111111111111111011
console.log(a >> b); // 00000000000000000000000000000001
console.log(c >> b); // 11111111111111111111111111111110
7. >>> (ZERO-FILL RIGHT SHFT)
2진법 표기에서 a 를 b 비트만큼 오른쪽으로 이동. 우측으로 범위를 초과한 비트는 삭제되며, 좌측에서는 0이 채워진다.
const a = 5; // 00000000000000000000000000000101
const b = 2; // 00000000000000000000000000000010
const c = -5; // 11111111111111111111111111111011
console.log(a >>> b); // 00000000000000000000000000000001
console.log(c >>> b); // 00111111111111111111111111111110
반응형