본문 바로가기
Computer Science/JavaScript

자바스크립트 Chapter 12 Bitwise Operators, Type Arrays and Array Buffers

by Write and Remember 2019. 5. 2.

 

자바스크립트 핵심 컨셉 33가지

 

Chapter 12. Bitwise Operators, Type Arrays and Array Buffers

 

이번 장에서는 자바스크립트 비트 연산자와 논리 연산자에 대해 알아보자.

 

비트 연산자 ( 0과 1을 출력 )

 

Operator(연산자) Usage(사용법) Description(설명)
AND(논리곱) a & b 각 자리 비트의 값이 둘다 1일 경우
해당하는 자리에 1을 반환
OR(논리합) a | b 각 자리 비트의 값이 둘다 0일 경우
해당하는 자리에 0을 반환
XOR(배타적논리합) a ^ b 각 자리 비트의 값이 같을 경우
해당하는 자리에 0을 반환
각 자리 비트의 값이 다를 경우
해당하는 자리에 1을 반환
NOT(부정) ~a 각 자리의 비트를 뒤집는다.
Left shift(왼쪽 시프트) a << b 오른쪽에서 0들을 이동시키면서,
a의 이진수의 각 비트를 b 비트 만큼
왼쪽으로 이동시킨 값을 반환
Sign-propagating right shift
(부호 전파 오른쪽 시프트)
a >> b 사라지는 비트를 버리면서,
a의 이진수의 각 비트를 b비트 만큼
이동시킨 값을 반환
Zero-fill right shift
(부호 없는 오른쪽 시프트)
a >>> b 사라지는 비트를 버리고 왼쪽에서 0을
이동시키면서, a의 이진수의 각 비트를
b비트 만큼 이동시킨 값을 반환

 

비트 단위 연산자 예제

 

console.log(15 & 9); // 9 이진법 1111 & 1001 = 1001
console.log(15 | 9); // 15 이진법 1111 | 1001 = 1111
console.log(15 ^ 9); // 6 이진법 1111 ^ 1001 = 0110
console.log(~9); // -10 이진법 00000000...00001001 = 11111111...11110110
// ~x의 평가 값은 -x-1의 평가값과 동일

 

비트단위 이동 연산자 예제

 

console.log(9 << 2) // 36 이진법 1001 2비트 왼쪽으로 이동 100100
console.log(9 >> 2) // 2 이진법 1001 2비트 오른쪽으로 이동 10
console.log(19 >>> 2) // 4 이진법 10011 2비트 오른쪽으로 이동 100

 

논리 연산자 ( boolean 값을 출력 )

 

Operator Usage Description
Logical AND( && ) a && b a, b 둘 다 true면 true
둘 중 하나라도 false면 false
Logical OR( || ) a || b a, b 둘 중 하나라도 true면 true
Logical NOT ( ! ) !a 피 연산자의 boolean 값을 반대로

 

논리 AND( && ) 예제

 

console.log(true && true); // true
console.log(true && false); // false

// 첫 번째 피연산자가 거짓으로 변환될 수 있으면 왼쪽 수식의 값을 반환
console.log(0 && true); // 0
console.log("" && true); // (빈 문자열)
console.log(null && true); // null
console.log(undefined && true); // undefined

// 첫 번째 피연산자가 거짓으로 변환될 수 없으면 두 번째 피연산자 평가하고
// 해당 수식의 변환되지 않은 값을 반환
console.log(10 && true); // true
console.log(true && 20); // 20

 

논리 OR ( || ) 예제

 

console.log(true || true); // true
console.log(true || false); // false
console.log(false || false); // false

// 왼쪽 수식의 값이 참으로 변환 될 수 있으면 변환되지 않은 왼쪽 값 반환
console.log('a' || true); // a
console.log(20 || false); // 20

// 왼쪽 수식의 값이 거짓으로 변환 될 수 있으면 오른쪽 수식 평가 후 변환되지 않은 값 반환
console.log(false || 'a'); // a
console.log(false || 20); // 20

 

논리 NOT ( ! ) 예제

 

console.log(!true); // false
console.log(!false); // true
console.log(!1); // false
console.log(!0); // true

댓글0