[JS] 비트연산자(bitwise operator)

KJA·2022년 10월 19일
0

비트 연산자(bitwise operator)

비트 연산자(bitwise operator)는 주어진 수를 2진수로 변환하여, 비트(bit) 단위로 논리 연산을 수행합니다.

비트 단위로 전체 비트를 왼쪽이나 오른쪽으로 이동시킬 때도 사용합니다.

& (AND 연산)

비트 AND 연산자는 대응되는 두 비트가 모두 1일 때만 1을 반환하며, 다른 경우는 모두 0을 반환합니다.

const and = 15 & 21; // 5
// 15 : 00001111
// 21 : 00010101
//      00000101 // 5

| (OR 연산)

비트 OR 연산자는 대응되는 두 비트 중 하나라도 1이면 1을 반환하며, 두 비트가 모두 0일 때만 0을 반환합니다.

const or = 15 | 21; // 31
// 15 : 00001111
// 21 : 00010101
//      00011111 // 31

^ (XOR 연산)

비트 XOR 연산자는 대응되는 두 비트가 서로 다르면 1을 반환하고, 서로 같으면 0을 반환합니다.

const xor = 15 ^ 21; // 26
// 15 : 00001111
// 21 : 00010101
//      00011010 // 26

~ (NOT 연산)

비트 NOT 연산자는 피연산자가 하나뿐이며 비트의 값들을 반전시킵니다. 해당 비트가 1이면 0을 반환하고, 0이면 1을 반환합니다.

const not = ~ 15; // 240
// 15 : 00001111
//      11110000 // 240

<< (left shift 연산)

지정한 수만큼 비트를 전부 왼쪽으로 이동시킵니다.

// 2의 제곱과 같음
const leftShift = 4 << 1; // 4 * 2 = 8
const leftShift2 = 4 << 2; // 4 * 2 * 2 = 16
const leftShift3 = 4 << 3; // 4 * 2 * 2 * 2 = 32

>> (right shift 연산)

부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킵니다.

// 나누기 2와 같음
const rightShift = 16 >> 1; //  16 / 2 = 8
const rightShift2 = 16 >> 2; // 16 / 2 / 2 = 4
const rightShift3 = 16 >> 3; // 16 / 2 / 2 / 2 = 2

>>> (Unsigned right shift)

지정한 수만큼 비트를 전부 오른쪽으로 이동시키며, 새로운 비트는 전부 0이 됩니다.

오른쪽으로 이동된 초과 비트는 삭제되고 왼쪽에서 0 비트가 이동됩니다.

// 나누기 2와 같음
const unsignedRightShift = 5 >>> 2; // 2비트 이동
// 5 : 00000000000000000000000000000101
//     00000000000000000000000000000001 = 1

const unsignedRightShift2 = -5 >>> 2; // 2비트 이동
// -5 : 11111111111111111111111111111011
//     00000000000000000000000000000001 = 1

const unsignedRightShift3 = 16 >>> 3; // 3비트 이동
// 16 : 00000000000000000000000000010000
//      00111111111111111111111111111110 = 1073741822

0개의 댓글