일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- til
- react localStorage
- JS
- axios
- firebase
- 자바스크립트
- 프론트엔드
- JavaScript
- react
- array
- 프리온보딩
- Frontend
- 파이어베이스
- state
- 브라우저
- 원티드
- Component
- Reducer
- 비트 연산자
- TypeScript
- localstorage
- v9
- es6
- 알고리즘
- Redux
- CORS
- 컴포넌트
- 리액트
- 타입스크립트
- 프로그래머스
Archives
- Today
- Total
도리쓰에러쓰
[JavaScript] 비트 연산자 본문
1️⃣ & (AND 논리 연산자)
: 비교하는 비트가 모두 1이면 1을 반환한다.
const and = 2 & 3;
console.log(and); // 2
// 2 : 0010
// 3 : 0011
// 0010 => 2
2️⃣ | (OR 논리 연산자)
: 비교하는 비트 중 하나라도 1이면 1을 반환한다.
const or = 2 | 3;
console.log(or); // 3
// 2 : 0010
// 3 : 0011
// 0011 => 3
3️⃣ ^ (배타 논리 연산자)
: 비교하는 비트가 같으면 0, 다르면 1을 반환한다.
const beta = 2 ^ 3;
console.log(beta); // 1
// 2 : 0010
// 3 : 0011
// 0001 => 1
4️⃣ ~ (부정 논리 연산자)
: 피연산자가 하나이며 비트를 반전시켜 음수를 나타낸다.
const not = ~ 18;
console.log(not); // -19
// 0000 0000 0000 0000 0000 0000 0001 0010 => 18
// 1111 1111 1111 1111 1111 1111 1110 1101 => -19
5️⃣ << (왼쪽 시프트 연산자)
: 지정한 수만큼 비트 전체를 왼쪽으로 이동하며, 지정한 수에 따라 2의 제곱만큼 피연산자가 곱해진다.
const leftShift = 5 << 2;
console.log(leftShift); // 20
// 5 : 0000 0101
// 🔽 이진수 5를 2비트 왼쪽으로 이동
// 10 : 0000 1010
// 20 : 0001 0100
// 5 * 2 * 2 = 20
6️⃣ >> (오른쪽 시프트 연산자)
: 지정한 수만큼 비트 전체를 오른쪽으로 이동하며, 오른쪽에 있는 비트는 소멸된다.
const rightShift = 5 >> 2;
console.log(rightShift); // 1
// 5 : 0000 0101
// 🔽 이진수 5를 2비트 오른쪽으로 이동
// 2 : 0000 0010
// 1 : 0000 0001
7️⃣ >>> (부호 없는 오른쪽 시프트 연산자)
: 지정한 수만큼 32비트 모두 오른쪽으로 이동하며 빈 비트는 전부 0으로 채운다.
양수인 경우엔 오른쪽 시프트 연산자(>>)와 동일하게 동작하지만, 음수인 경우엔 오른쪽 시프트 연산자(>>)와 다르게 동작한다.
💡 양수인 경우
console.log(5 >>> 2); // 1
// 5 : 0000 0000 0000 0000 0000 0000 0000 0101
// 🔽 이진수 5를 2비트 오른쪽으로 이동
// 2 : 0000 0000 0000 0000 0000 0000 0000 0010
// 1 : 0000 0000 0000 0000 0000 0000 0000 0001
💡 음수인 경우
console.log(-5 >>> 2); // 1073741822
// -5 : 1111 1111 1111 1111 1111 1111 1111 1010
// 🔽 이진수 -5를 2비트 오른쪽으로 이동
// 0111 1111 1111 1111 1111 1111 1111 1101
// 0011 1111 1111 1111 1111 1111 1111 1110 => 1073741822
Comments