꾸매코딩

[JavaScript] 비트연산자 정리 본문

JavaScript

[JavaScript] 비트연산자 정리

꾸매코더 2022. 10. 12. 23:46
반응형

JavaScript 비트 연산자

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

 


& (AND 논리 연산자)

비교하는 비트가 모두 1이면 1을 반환

⇒ 두 비트가 모두 1인 값을 반환
const ex1 = 2 & 3;
console.log(ex1);
// 2 0010
// 3 0011
//.  0010 = 2

 


| (OR 논리 연산자)

비교하는 비트 중에서 하나라도 1이면 1을 반환

⇒ 두 비트 중 하나라도 1이면 1을 반환
const ex2 = 2 | 3;
console.log(ex2);
// 2 0010
// 3 0011
//.  0011 = 3

 


^ (XOR 배타 논리 연산자)

비교하는 두 개의 비트가 같으면 0을, 다르면 1을 반환

⇒ 두 비트가 다를 때 1을 반환
const ex3 = 5 ^ 3;
console.log(ex3)
// 5 0101
// 3 0011
//.  1000 = 6

 


~ (NOT 부정 논리 연산자)

피연산자가 하나뿐이며 비트의 값들을 반전시킴

NOT 연산자기 때문에 비트단위로는 1은 0으로, 0은 1로 바꿈

⇒ 비트 NOT 연산자, 비트 뒤집기
const ex4 = ~3;
console.log(ex4)
// 0011  3
// 0100 -4

컴퓨터는 음수를 2의 보수로 표현하기 때문에 비트단위 NOT 연산자는 다음과 같은 값을 갖는 성질이 있다.

~N -> -(N+1) N은 정수 

 

<< (Shift 왼쪽 시프트 연산자)

지정한 수만큼 비트 전체를 왼쪽으로 이동

몇 칸 이동했는지에 따라 2의 제곱만큼 수가 곱해진다

 

const a = 1;

console.log(a << 1); // 2
console.log(a << 2); // 4
console.log(a << 3); // 8
console.log(a << 4); // 16

 


>> (Shift 오른쪽 시프트 연산자)

지정한 수만큼 비트 전체를 오른쪽으로 이동

오른쪽에 있는 비트가 소멸되기 때문에 규칙성이 없음 ( 비트가 밖으로 밀려나기 전까진 2씩 나눈 값 )
const a = 16;

console.log(a >> 1); // 8
console.log(a >> 2); // 4
console.log(a >> 3); // 2
console.log(a >> 4); // 1
console.log(a >> 5); // 0
console.log(a >> 6); // 0

 


비트 연산자를 정리한 이유

알고리즘 문제를 풀다가 비트 연산자를 발견했다. 어디서 본 것 같은 기분만 가지고 있었는데, 학생 때 C언어를 공부하면서 배운 내용인 것 같다. 아직까진 실무에서 사용할 일은 없다고 생각하지만, 최근에 알고리즘 문제를 풀고 있으므로 쓰일 곳이 있을 것 같아서 정리하려 한다. 어려운 내용이 아니라서 한번 시간 내서 정리하면 좋을 것 같다고 생각했다.

 


 

참고자료

https://velog.io/@nulbo/TIL-JavaScript-%EB%B9%84%ED%8A%B8-%EC%97%B0%EC%82%B0%EC%9E%90

 

[TIL / JavaScript] 비트 연산자

비트 연산자를 어디에 활용할 수 있을지 찾아봤지만 와닿지는 않았다. 하지만 중요한 사실은 내가 직접 0과 1을 제어할 수 있다는 것이다😇 당장 필요하지 않더라도 하나씩 알아가다 보면, 이유

velog.io

https://www.habonyphp.com/2019/03/js_28.html

 

JS - 비트 연산자

무료로 사용할 수 있는 CMS 형 PHP 버드 패널, 테마, FTP 외 라이브러리 제공

www.habonyphp.com

 

반응형