본문 바로가기
알고리즘

비트마스킹

by limew 2023. 12. 6.

비트마스킹은

  • 컴퓨터 과학에서 비트 연산자를 사용하여 특정 위치의 비트를 설정하거나 조작하는 기술이다
  • 데이터를 압축하는데에 유용하며 효율적으로 데이터를 다룰 수 있다.

 

비트마스크의 주요 연산

비트 설정

OR(|) 연산자를 사용하여 특정 위치의 비트를 1로 설정한다.

 

let num = 5; // 5의 이진 표현은 '101' 
let mask = 1 << 2; // 비트를 설정할 위치를 나타내는 마스크 (2번째 비트) 
num = num | mask; // 5의 2번째 비트를 1로 설정하여 num은 이제 '111' (7)

 

 

비트 확인

AND(&) 연산자를 사용하여 특정 위치의 비트를 확인한다

 

let num = 5; // 5의 이진 표현은 '101'
let mask = 1 << 2; // 비트를 확인할 위치를 나타내는 마스크 (2번째 비트)
let bit = (num & mask) !== 0; // 2번째 비트가 1인지 확인 (결과는 true)

 

 

비트 지우기

AND(&)NOT(~) 연산자를 사용하여 특정 비트를 0으로 지운다

 

let num = 5; // 5의 이진 표현은 '101'
let mask = ~(1 << 1); // 비트를 지울 위치를 나타내는 마스크 (1번째 비트)
num = num & mask; // 5의 1번째 비트를 0으로 지워 num은 이제 '100' (4)

 

 

비트 반전

XOR(^) 연산자를 사용하여 특정 위치의 비트를 반전시킨다.

 

let num = 5; // 5의 이진 표현은 '101'
let mask = 1 << 0; // 비트를 반전할 위치를 나타내는 마스크 (0번째 비트)
num = num ^ mask; // 5의 0번째 비트를 반전하여 num은 이제 '100' (4)

 

 

 

XOR

비트 연산자 중에서 같은 자릿수의 비트가 서로 다를 경우 1, 같을 경우 0을 출력하는 연산자다.

console.log(3 ^ 5); // 011 ^ 101 => 110 => 6