자바스크립트 비트 연산자

GDana
gdana
Published in
4 min readAug 6, 2018

이진 검색의 바람을 타고..

자바스크립트를 공부하다보면 연산자 파트에서 어김없이 등장하는 생소한 아이가 있는데 바로 ‘비트 연산자’. 다음에를 외치듯 넘어갔던 비트 연산자가 대체 무엇이길래 공부하고 있던 자바스크립트의 제어구문 부분에서 이진 검색 예제가 나왔을까?! 이진검색을 알고자 시작한 날개짓이 부동소수점, 가수, 비트연산자까지 이어져 온다…

비트 = 그 비트(bit)가 맞다

비트 연산자가 대체 무엇에 쓰는 것일까? 사람에게 익숙한 10진수가 아닌 컴퓨터 연산에 최적화된 2진수 연산으로

주어진 수를 2진수로 변환 → 비교 → 비교 결과를 10진수로 변환 및 출력

하는 것이 비트 연산이라 한다. 때문에 우리는 비트연산에 들어가기 앞서 2진법을 알아야 하므로 혹 2진법이 생소한 이에게는 아래의 참조의 링크를 추천한다. 해당 참조 자료만으로도 충분히 따라올 수 있는 난이도이니 걱정말기를! 더불어 해당 글은 아래의 동영상을 토대로 정리한 글이니 말로써 이해하기 원한다면 해당 동영상을 추천한다.

참조링크

http://sdks.tistory.com/668

https://bit.ly/2EN9HLc

비트 연산자

  • & : 비교하는 비트가 모두 1이면 1 반환(AND)
  • | : 비교하는 비트 중에서 하나라도 1이면 1 반환(OR)
  • ^ : 비교하는 비트가 같으면 0, 다르면 1 반환(XOR, 보수법)
  • ~ : 다른 연산자와는 다르게 연산을 진행하는 피연산자는 하나뿐이며, ! 연산자와 비슷한 부정연산자로 비트의 값들을 뒤짚는다
  • << : 지정한 수만큼 비트 전체를 왼쪽으로 이동(left shift)
  • >> : 지정한 수만큼 비트 전체를 오른쪽으로 이동(right shift)
  • >>> : 지정한 수만큼 비트를 전부 오른쪽으로 이동, 새로운 비트는 전부 0이 된다

& (AND 논리 연산자)

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

const b1 = 2 & 3;
console.log('2 & 3: ',b1); //2
//2 0010
//3 0011
// 0010 = 2

| (OR 논리 연산자)

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

const b2 = 2 | 3;
console.log('2 | 3: ',b2); //3
//2 0010
//3 0011
// 0011 = 3

~ (부정 논리연산자)

다른 연산자와는 다르게 연산을 진행하는 피연산자는 하나뿐이며, ! 연산자와 비슷한 부정연산자로 비트의 값들을 뒤짚는다

const b3 = ~4;
console.log('~4: ',b3); //-5
//0000 0100
//1111 1011
//1bit 자리 즉 가장 왼쪽에 있는 것이 부호 비트인데
//1이면 음수, 0이면 양수이다

<< (시프트 연산자)

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

const b4 = 4 << 2;
console.log('4 << 2: ',b4); //16
//4를 2비트(2회) 왼쪽으로 이동하라
//0000 0100 4
//0000 1000 8(1회 이동함)
//0001 0000 16(2회 이동함)
//4 * 2 * 2

>> (시프트 연산자)

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

const b5 = 4 >> 2;
console.log('4 >> 2: ',b5); //1
//4를 2비트(2회) 오른쪽으로 이동하라
//0000 0100 4
// 000 0010 2(1회 이동함)
// 00 0001 1(2회 이동함)
//4 / 2 / 2

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

지정한 수만큼 비트를 전부 오른쪽으로 이동, 새로운 비트는 전부 0이 된다

예제 필요, 일반 시프트랑 어떻게 구분이 되는지 이해가 잘 안감

--

--