Post

[혼자 공부하는 컴퓨터구조+운영체제]02장 데이터

02-1 0과 1로 숫자를 표현하는 방법

정보 단위

  • 현재의 정보 단위
    • 1 byte = 8 bit
    • 1 kB = 1000 byte
    • 1 MB = 1000 kB
    • 1 GB = 1000 MB
    • 1 TB = 1000 GB
  • 전통적 단위
    • 1 KiB = 1024 byte
    • 1 MiB = 1024 KiB
    • 1 GiB = 1024 MiB
    • 1 TiB = 1024 GiB
  • 워드
    • CPU가 한 번에 처리할 수 있는 데이터 크기
    • 워드를 기준으로 하프 워드, 풀 워드, 더블 워드 존재

이진법

이진수의 음수 표현

일반적으로 2의 보수(two’s complement)를 음수로 간주한다.

  • 2의 보수: 어떤 수를 그보다 큰 2ⁿ에서 뺀 값
    • 예) 11의 2의 보수는 100에서 11을 뺀 01
  • 계산 방법: 이진수의 0과 1을 뒤집은 뒤 1을 더한 값
    • 예) 11의 2의 보수는 00에 1을 더한 01
    • 참고) 이진수의 0과 1을 뒤집은 수 ⇒ 1의 보수
  • 한계: n개의 비트로는 -2ⁿ과 2ⁿ을 동시에 표현 불가
    • 2ⁿ의 2의 보수는 2ⁿ과 같기 때문

16진법

16진법은 이진수로 변환하기 쉽기 때문에 용이하다.

  • 16진수를 이진수로 변환하기
    • 16진수 한 글자를 4비트의 이진수로 간주한다.
  • 이진수를 16진수로 변환하기
    • 이진수 숫자를 네 개씩 끊고 각각을 16진수로 변환한다.

02-2 0과 1로 문자를 표현하는 방법

문자 집합과 인코딩

  • 문자 집합: 컴퓨터가 인식하고 표현할 수 있는 문자의 모음
  • 문자 인코딩: 문자를 컴퓨터가 이해할 수 있는 0과 1로 변환하는 과정
  • 문자 디코딩: 0과 1을 사람이 이해할 수 있는 문자로 변환하는 과정

아스키코드

  • American Standard Code for Information Interchange, ASCII
  • 영어 알파벳, 아라비아 숫자, 일부 특수문자 포함
  • 문자는 7비트로 표현 ⇒ 총 128개의 문자 표현
    • 오류 검출을 위한 패리티 비트(parity bit)까지 총 8비트를 사용
  • 코드 포인트: 문자 인코딩에서 글자에 부여된 고유한 값
    • 예) 아스키 문자 A의 코드 포인트 ⇒ 65
  • 확장 아스키: 아스키코드에 1비트를 추가
    • 이 또한 크기가 부족

EUC-KR

  • 한글 인코딩 방식
    • 완성형 인코딩: 완성된 하나의 글자에 코드 부여
    • 조합형 인코딩: 초성, 중성, 종성을 위한 각각의 비트열 할당 → 조합하여 글자 코드 완성
  • EUC-KR
    • 완성형 인코딩 방식
      • 완성된 하나의 한글 단어에 2바이트 코드 부여 ⇒ 네 자리 16진수로 표현 가능
    • 모든 한글 조합을 표현하지는 못함
  • CP949(Code Page 949)
    • 마이크로소프트가 개발한 EUC-KR의 확장 버전
    • 이또한 모든 한글 조합을 표현하지는 못함

유니코드와 UTF-8

  • 유니코드
    • 여러 나라의 문자를 광범위하게 표현할 수 있는 통일된 문자 집합
    • U+: 16진수로 유니코드를 표현할 때 사용하는 표기
    • 글자에 부여된 값을 UTF-8, UTF-16, UTF-32 등의 방식으로 인코딩
      • UTF: Unicode Transformation Format
  • UTF-8
    • 유니코드 문자에 부여된 값의 범위에 따라 1 또는 2 또는 3 또는 4 바이트로 표현
    • 인코딩 결과는 고정된 형태를 가지고, 빈 공간에 코드 포인트를 추가
    • 예) “한”이 갖는 인코딩 형태: 1110XXXX 10XXXXXX 10XXXXXX
      • “한”의 코드 포인트 D55C → 1101 0101 0101 1100
      • 1110XXXX 10XXXXXX 10XXXXXX에 코드 포인트 추가
      • 최종 결과 ⇒ 11101101 10010101 10011100
This post is licensed under CC BY 4.0 by the author.