책읽기

[파이썬 알고리즘 인터뷰] 19장 - 비트 조작

pythaac 2021. 8. 16. 03:37
이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 

출처 : https://www.onlybook.co.kr/entry/algorithm-interview

 

  • 부울 대수 (Boolean Algebra)
    • true / false의 2개 값으로 논리 연산을 정의
  • 부울 연산자
    • NOT
    • AND
    • OR
    • XOR
  • 비트 연산자
    • &
    • |
    • ^
    • ~
    • >> <<
  • 파이썬의 관련 함수
    • 숫자는 모두 같은 취급 (객체 id도 같음)
      - 0b1010 == 10
    • bin
      - 10진수를 2진수 str로
      - bin(8) / bin(0b1000)
    • int
      - 2진수 str을 숫자로
      - int('1111', 2) / int('0b1010', 2)
    • hex
      - 16진수 str을 숫자로
      - hex(16) / hex(0b1011)
  • 자릿수 제한 비트 연산
    • bin(0b0101 ^ ~0b1100)
      - -> 0b0101 ^ 0b0011 -> 0b0110을 기대
      - 결과가 -0b1010 (NOT연산으로 인해 보이지 않는 비트들까지 1로 변경됨
      - 0b0000...0101 ^ 0b1111...0011 -> 0b1111...0110
    • MASK를 이용해 원하는 비트수 만큼 자르기
      - MASK = 0b1111
      - bin(0b0101 ^ ~0b1100 & MASK)