[Algorithm] 진법변환/비트연산

hyem·2021년 8월 16일
0

Algorithm

목록 보기
11/12
post-thumbnail

1. 진법

: 수를 셀 때 자릿수가 올라가는 단위를 기준으로 하는 샘법의 총칭 (사용하는 숫자의 개수가 진법의 숫자를 의미)

1) 진법 변환하기 - 파이썬 함수

  • 10진수 10을 2진수로 변환하기
    bin(10) => 0b1010

  • 10진수 95를 8진수로 변환하기
    oct(95) => 0o137

  • 10진수 350을 16진수로 변환하기
    hex(350) => 0x15e

    ⚡16진법에서 사용하는 16가지 숫자⚡
    : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a(10), b(11), c(12), d(13), e(14), f(15)

  • 10진수로 되돌리기
    int(0b1010) => 10
    int(0o137) => 95
    int(0x15e) => 350

2. 비트연산

: 한 개 혹은 두 개의 이진수에 적용되는 연산

1) 비트연산의 종류

  • & (AND)
    : 각 자릿수를 비교하여 둘다 1일 경우 1, 아니면 0을 반환
    bin(0b1101 & 0b1011) => 0b1001
  • | (OR)
    : 각 자릿수를 비교하여 둘 중 하나가 1일 경우 1, 아니면 0을 반환
    bin(0b1101 | 0b1011) => 0b1111

  • ^ (XOR)
    : 각 자릿수를 비교하여 다르면 1, 같으면 0을 반환
    bin(0b1101 ^ 0b1011) => 0b0110

  • ~ (NOT)
    : 비트 반전 연산자. 1은 0으로, 0은 1로 변환
    bin(~0b0010) => (0b1101이 아니라) -0b11
    💎 쉽게 계산하기 : 1을 더한 뒤 부호를 바꿔준다

    ⚡ 2진수의 음수 개념 이해 ⚡
    (10진수 => 2진수)
    3 => 0b0011
    2 => 0b0010
    1 => 0b0001
    0 => 0b0000
    -1 => 0b1111 (0에서 계속 1씩 뺀다)
    -2 => 0b1110
    -3 => 0b1101
    ...

  • <<, >> (SHIFT)
    • << : 비트를 왼쪽으로 주어진 수만큼 옮긴다.
      bin(0b11<<3) => 0b11000
      bin(0b1100<<2) => 0b110000
    • >> : 비트를 오른쪽으로 주어진 수만큼 옮긴다.
      bin(0b11>>1) => 0b1
      bin(0b1100>>2) => 0b11

2) 비트연산과 십진법

  • ex. 35 | 5 연산하기
    => 100011 | 101 (컴퓨터가 2진법으로 변환)
    => 100111 (OR 연산 수행)
    => 39 (10진법으로 바꿔서 결과 출력)

3) 비트연산 활용

  • 컴퓨터 연산을 위한 비트 필드
  • 데이터의 압축 및 암호화
  • 유한 상태 기계
  • 컴퓨터 통신을 위한 포트 및 소켓

0개의 댓글