CS 공부 1 - 비트~숫자/텍스트/색 표현

2023. 10. 25. 23:07배움엔 끝이없다/CS 공부

비트

  • 비트 : 0 or 1 을 표현
  • 기본 boolean 연산 : AND, OR, NOT, XOR
  • 드모르간의 법칙 : A and B = ~A or ~B

정수

  • 정수는 2진수로 표현됨
    • LSB : Least Significant Bit
    • MSB : Most Significant Bit
  • 정수 표현 방법
    • 냅다 2진수로 표현 : 음수 표현 불가능
    • 맨 앞 비트를 부호로 사용 : 0표현이 2개(1000, 0000)이고, 더하기가 매끄럽지않음
    • 음수는 1의 보수 (양수에서 모든 비트 반전) : 0표현이 2개, 순환 올림 발생(부호비트끼리 더한 뒤 carry를 맨 LSB에 더해줘야함)
    • 따라서 : 2의 보수 (0과 더하면 -1이 되는 수를 -1로 정함) (모든비트 반전 후 +1)

실수

  • 고정소수점 표현 : 비트 일부는 정수부, 일부는 소수부 표현 -> 커버하는 범위가 적음
  • 부동소수점 표현 : 유효숫자 표현 방식을 응용, 비트 일부는 지수부, 일부는 가수부 표현 -> 커버하는 범위가 넓음
    • float : single-precision, 지수 8bit + 가수 23bit
    • double : double-precision, 지수 11bit + 가수 52bit

진법 표기

  • 8진수 : 0으로 시작
  • 10진수 : 1~9로 시작
  • 16진수 : 0x로 시작

텍스트 표현

  • 아스키 코드 (ASCII)
  • UTF-8 : 8비트씩 끊어서 표현하기때문에 비트시퀀스의 길이에 상관없이 표현 가능
    • 8비트 단위로 봤을 때, 첫 0이 나온 뒤부터가 실제 데이터임
    • 이는 ASCII가 7비트만 쓰기 때문에 아스키 표현시 효과적인듯
      • 예) 0000 0000 0100 0001 을 utf-8 인코딩 -> 01000001
      • 예) 0000 0011 1100 0000 을 utf-8 인코딩 -> 110[01111] / 10[000000] (대괄호 안이 실제 데이터)
  • base64 : Printable 문자들(알파벳 등)을 표현하기위해 6비트 사용 (3byte=24bit를 4개로 쪼개 사용)
    • 3바이트로 나눠떨어지지 않으면 패딩문자(=)를 넣음
  • url 인코딩 : 문자는 8bit=2자리 16진수 숫자로 표현되므로, %뒤에 어떤 문자의 16진 표현을 붙임

색표현

  • rgb 각 8bit씩 사용해 한 바이트에서 24bit만 사용함
  • 남은 8bit는 alpha채널로 사용
  • 이미지 blending 시 어차피 색에 alpha를 곱하므로, 미리 곱해서 24비트로 만들어두는 인코딩도 가능
반응형