혼공컴운 - Chapter 2

JJuuuunn·2024년 1월 8일
0
post-thumbnail

데이터

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

정보단위

  • 컴퓨터가 이해하고, 표현할 수 있는 0과 1을 나타내는 가장 작은 정보 단위, 비트(bit)
  • 흔히 전구에 빗대여 표현
  • n비트는 2^n가지 정포를 표현
    | 바이트(byte) | 비트(bit) |
    | - | - |
    | 1byte | 1000byte |
    | 1kB(킬로바이트) | 1000byte |
    | 1MB(메가바이트) | 1000kB |
    | 1GB(기가바이트) | 1000MB |
    | 1TB(테라바이트) | 1000GB |

이진법(binary)

  • 0과 1로 모든 숫자를 표현하는 방법
  • 이진수 끝에 아래첨자(2)를 붙이거나 이진수 앞에 0b를 붙여서 구분.
  • 이진수의 음수 표현
    * 2의 보수를 통해 표현 가능
    1. 1의 보수를 통해 0은 1로 1은 0으로 변환
    2. 1의 보수로 통해 나온 값에 1을 더함
    • 컴퓨터 내부에서는 플래그를 사용하여 양수, 음수를 구분

십육진법(hexadecimal)

  • 한 글자로 열여섯 종류의 정표를 표현가능(0 ~ 9, A ~ F)
    10, 11, 12, 13, 14, 15 를 A, B, C, D, E, F로 표기
  • 이진수와 마찬가지로 숫자 뒤에 아래첨자 (16)을 붙이거나 숫자 앞에 0x를 붙여 구분

16진수를 2진수로 변환

  • 십육진수 한 글자를 4비트의 이진수로 간주하여 변환 후 붙임
    2^4 = 16

2진수를 16진수로 변환

  • 위와 반대로 4개의 숫자를 하나의 십육진수로 변환한 뒤 이어 붙임

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

문자 집합과 인코딩

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

아스키 코드(ASCII)

  • 초창기 문자 집합 중 하나(영어 알파벳, 아라비아 숫자, 일부 특수문자 포함)
  • 8비트를 사용하지만 그 중에서 1비트는 패리티 비트(parity bit)라고 하여 오류를 검출을 위해 사용되어 7비트만 사용
  • 실질적으로 문자 표현을 위해 사용되는 비트는 7비트 => 128개의 문자를 표현가능(0 ~ 127)
  • 한글을 표현할 수 없음

EUC-KR

  • 한글 인코딩에는 두 가지 방식이 존재
    * 완성형 인코딩 : 완성된 하나의 글자에 고유한 코드를 부여
    • 조합형 인코딩 : 초성, 중성, 종성에 각각의 비트열을 할당하고, 그것들을 조합하여 하나의 글자코드를 만드는 방식
  • 한글 한글자에 2바이트 코드를 부여하였으나 총 2350개의 한글 단어를 표현하기에 부족
  • 이후 마이크로소프트의 CP949라는 새로운 버젼이 나왔지만 이마저도 한글 전체를 표현하기에는 역부족

유니코드와 UTF-8

언어볼려 인코딩을 나라마다 해야할때 다국어를 지원하는 프로그램을 만들 경우, 각 나라별로 인코딩을 알아야하는 번거로움이 존재

  • 유니코드 : EUC-KR보다 훨씬 다양한 한글을 포함하며 대부분 나라의 문자, 특수문자, 화살표나 이모티콘까지도 코드로 표현할수 있는 통일된 문자 집합
  • 글자에 부여된 값 자체를 인코딩된 값으로 삼지않고 이 값을 다양한 방법으로 인코딩
  • UTF-8, UTF-16, UTF-32는 유니코드 문자에 부여된 값을 인코딩하는 방식

    UTF-8

  • 통상 1바이트부터 4바이트까지의 인코딩 결과를 만듬
  • 인코딩한 결과가 몇 바이트가 될지는 유니코드 문자에 부여된 값의 범위에 따라 결정
profile
포기하지않겠습니다.

0개의 댓글