컴퓨터의 숫자, 문자 표현

HARIBO·2022년 2월 3일
0

정수 표현

  • 양의 정수 표현
    - ex) 4비트 : 2^4 -> 0 ~ 15까지의 수 표현 가능
    - 비트의 표현 범위를 벗어나면 오버플로(overflow)가 발생한다. 이 반대는 언더플로(underflow)

음수 표현

  • 부호와 크기 표현법 : 비트의 가장 왼쪽을 부호로 사용한다(0 -> +, 1 -> -). 연산 결과가 예상과 다르게 나오고 맨 앞자리가 낭비되어서 잘 사용되지 않는다.
  • 1의 보수 표현법 : 음수를 양수 비트를 뒤집은 값(0111(+7) -> 1000(-7))로 나타낸다. 순환 올림을 처리해야 돼서 사용되지 않는다.
  • 2의 보수 표현법 : 더했을 때 ‘0’이 되는 수를 음수로 표현한다(0001(+1) -> 1111(-1)). 각 비트를 뒤집고, 마지막에 1을 더하면 음수를 얻을 수 있다.

실수 표현

  • 고정소수점 표현법
    - 소수점의 위치가 항상 일정하다. 필요한 비트 수가 많아서 잘 사용하지 않는다.
  • 부동소수점 표현법
    - 소수점 왼쪽이 한 자리뿐인 수(가수. Mantissa)에 밑이 2인 지수를 곱해서 표현한다.(가수: 1.1, 지수: 11 -> 1 * 1/2 * 2^3 = 12)
    - 지수가 커질수록 패턴 간의 차이가 커지게 되고 표현할 수 없는 비트 패턴이 생기게 된다. ex) 6.5
    - 부동소수점 표현법의 단점을 보완하기 위해, 기본 정밀도(32비트), 2배 정밀도(64비트) 부동소수점 수를 사용한다.
    - 지수 비트가 모두 0이거나 1인 경우 ‘편향값’을 의미한다. NaN등을 표현하는데 사용된다.

2진수 표현하기

  • 2진수를 16진수로 변환하기
    - 비트를 4개씩 나누고 16진수로 표현한다.
  • 진법 표현하기
    - 8진수 : 0으로 시작한다.
    - 10진수 : 1 ~ 9 사이의 숫자로 표현한다.
    - 16진수 : 0x로 시작한다.

문자 표현하기

  • 아스키 코드
    - 7비트로 문자를 표현
    - 몇 가지 문자는 장치를 제어하기 위한 제어 문자이다.(NUL, STX...)
  • 유니코드
    - 16비트에서 21비트로 확장됨
  • UTF-8(유니코드 변환형식 8비트. Unicode Transformation Format-8 bit)
    - 문자를 8비트의 덩어리로 나눠서 표현(유니코드의 인코딩 방식이다.)
    - 7비트 이내의 코드(아스키 코드)는 맨 앞에 0을 붙인다.

    - 11비트 초과, 16비트 이내인 경우(한글. 3바이트로 표현)
    • 맨 앞’1110’ : 맨 앞 1을 써서 1바이트 초과를 나타냄, 뒤의 1,1은 후속 바이트가 2개임을 나타냄, 뒤의 0은 선언 종료.
    • 후속 바이트의 ‘10’은 후속 바이트임을 명시한다.

문자를 사용한 숫자 표현

  • 베이스 64인코딩
    - 3바이트 데이터를 4문자로 표현
    - 3바이트(24비트)를 4개로 나누고 6비트를 문자로 표현한다.
    -원본 데이터가 3바이트의 배수가 아니면 뒤에 패딩 문자 ‘=’를 붙인다.
    - 전자우편 첨부에 많이 사용된다.
  • URL인코딩(= 퍼센트 인코딩)
    - ‘/’같은 특수한 문자를 문자 그대로(리터럴)사용하기 위해서 %뒤에 16진수 표현을 붙여서 사용한다.

색 표현

  • 32비트를 사용
    - 24비트는 빨간색, 녹색, 파란색을 표현하며
    - 나머지 8비트는 투명도를 나타낸다.
  • 텍스트 인코딩
    - 16진 트리플렛
    • #뒤에 16진수로 RGB표현(#rrggbb)

출처
조너선 스타인하트, 한 권으로 읽는 컴퓨터 구조와 프로그래밍(2022)
나무위키 UTF-8(https://namu.wiki/w/UTF-8)
위키백과 유니코드(https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_A000~AFFF)

0개의 댓글