도리쓰에러쓰

[JavaScript] 비트 연산자 본문

JavaScript

[JavaScript] 비트 연산자

강도리 2022. 11. 3. 17:04

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