-
[JS] 비트 연산자 - "&", "|", "^", "~", "<<", ">>", ">>>"Javascript/이론 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
반응형'Javascript > 이론' 카테고리의 다른 글
[ JS ] rotate3d 값 얻기 (0) 2023.02.08 [ JS ] Date 객체와 메서드 (0) 2023.01.01 [ JS ] 표준 입력 - process.stdin (0) 2022.12.29 [JS] .length는 함수가 아니라 프로퍼티이다. (0) 2022.12.28 [JS] 정규 표현식의 패턴과 플래그 (0) 2022.12.21