[알고리즘] BitMask

Judy·2023년 1월 16일
0

알고리즘

목록 보기
4/5

BitMask

비트를 마스킹하는 기술 -> 정수를 이진수로 나타내서 연산하는 방식

  • 그래픽 프로그래밍 및 장치 드라이버 생성과 같은 저수준 프로그래밍에 자주 사용
  • 사용자 정의 프로토콜을 통한 통신을 위해 데이터 인코딩 및 디코딩과 같은 외부 소스의 원시 데이터로 작업할 때도 유용

장점

  • 메모리를 적게 사용
  • 프로그램이 빠르게 동작
  • 코드가 직관적

연산자

NOT (~)

  • 모든 비트를 반전
let initialBits: UInt8 = 0b00001111
let invertedBits = ~initialBits 	// 11110000

❗️0b = 2진수 표현

  • 8 진수: 0o
  • 16 진수: 0x

OR (|)

  • 모든 비트가 0인 경우에만 0
let someBits: UInt8 = 0b10110010
let moreBits: UInt8 = 0b01011110
let combinedbits = someBits | moreBits  // 11111110

And (&)

  • 모든 비트가 1인 경우에만 1
let firstSixBits: UInt8 = 0b11111100
let lastSixBits: UInt8  = 0b00111111
let middleFourBits = firstSixBits & lastSixBits  //  00111100

XOR (^)

  • 두 비트가 다른 경우에만 1
let firstBits: UInt8 = 0b00010100
let otherBits: UInt8 = 0b00000101
let outputBits = firstBits ^ otherBits  // 00010001

시프트 연산자 <<, >>

  • 숫자의 모든 비트를 왼쪽 또는 오른쪽으로 특정 위치만큼 이동
  • 2의 인수로 곱하거나(<<) 나누는(>>) 효과
let initialBits: UInt8 = 0b00010100
let outputBits = initialBits << 2  // 1010000

0으로 초기화

num = 0

1로 초기화

num = -1
  • 1: 00000001
  • 1의 1의 보수: 11111110
    - 모든 자리를 반전
  • 1의 2의 보수: 11111111
    - 1의 보수에 +1
  • 컴퓨터는 2진법으로 2의 보수 적용





Advanced Operators
비트 마스크
2의 보수

profile
iOS Developer

0개의 댓글