[JavaScript] 비트연산자 정리

2022. 10. 12. 23:46·JavaScript
반응형

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

 

반응형
저작자표시 비영리 변경금지 (새창열림)
'JavaScript' 카테고리의 다른 글
  • [JavaScript] 기본형 데이터와 참조형 데이터의 변수 복사 비교
  • [JavaScript] 기본형 데이터와 참조형 데이터 비교
  • [JavaScript] Default Export 와 Named Export 비교
  • [JavaScript] Ajax, Axios, fetch 용어 정리 및 장/단점 비교
꾸매코더
꾸매코더
웹 / 앱 개발자
  • 꾸매코더
    꾸매코딩
    꾸매코더
  • 전체
    오늘
    어제
    • 분류 전체보기 (96)
      • JavaScript (18)
        • Deep Dive (0)
      • React (5)
      • React-Native (9)
      • CSS (3)
      • TypeScript (1)
      • CS (10)
      • GitHub (4)
      • Clone Coding (15)
        • Kakaotalk [HTML + CSS] (10)
        • Momentum [JavaScript] (5)
      • Project (30)
        • Timer Project (14)
        • Netflix [React + Hooks] (12)
        • ToDoList [React-Native] (4)
      • 회고 (1)
  • 링크

    • Github
  • hELLO· Designed By정상우.v4.10.3
꾸매코더
[JavaScript] 비트연산자 정리
상단으로

티스토리툴바