개발일지

혼자 공부하는 컴퓨터구조+ 운영체제 - 데이터 본문

CS

혼자 공부하는 컴퓨터구조+ 운영체제 - 데이터

wa_n 2023. 2. 7. 13:25
728x90
반응형

데이터

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

0과 1만 이해하는 컴퓨터가 3이나 4 이런 숫자를 어떻게 인식하는지 이런 걸 알기 위해

컴퓨터가 표현하는 정보 단위를 알아보고 0과 1만으로 숫자를 표현하는 방법도 알아보자

정보단위

비트 : 0과 1을 표현할 수 있는 가장 작은 정보 단위

  • 1 비트는 두 가지 정보를 표현할 수 있다. 2비트는 4가지 정보 이를 보면 n비트는 2n가지 정보를 표현할 수 있다

바이트 : 8개의 비트를 하나로 묶은 단위

  • 1바이트는 8비트 2의 8 제곱은(256개의 정보 )

킬로바이트 : 1바이트 1000개를 묶는 단위

메가바이트 : 1 킬로바이트 1000개를 묶는 단위

기가바이트 : 1 메가바이트 1000개를 묶는 단위

테라바이트 : 1 기가바이트 1000개를 묶는 단위

1 바이트 (byte) 8 비트 (8bit)

1 킬로바이트(1KB) 1000 바이트(byte)
1 메가바이트(1MB) 1000 킬로바이트(1000KB)
1 기가바이트(1GB) 1000 메가바이트(1000MB)
1 테라바이트(1TB) 1000 기바바이트(1000GB)

워드

중요한 정보 단위 중 워드(word)란 단위가 있다. 위드는 CPU가 한 번에 처리할 수 있는 데이터 크기를 의미한다

CPU가 한 번에 16비트를 처리할 수 있다면 1 워드는 16비트가 되고 32비트를 한 번에 처리한다면 1 워드는 32비트가 된다

이렇게 정의된 워드의 절반 크기를 하프 워드, 1배의 크기를 풀 워드, 2배의 크기를 더블 워드 라고 한다

이진법

수학에서 0과 1만으로 모든 숫자를 표현하는 방법 컴퓨터가 쓰는 숫자는 0과 1로 이루어져 있다. 이것은 이진법(Binary)이라고 불리는 숫자 체계이다.

숫자가 1을 넘어가는 시점에 자리올림

우리가 일상적으로 사용하는 진법은 9에서 다음으로 숫자가 넘어가면 자리올림 하는 십진법

이진수 표기법

(2) 아래첨자 2를 넣어주거나

코드 상에서는 0b라고 적어서 사용한다

0과 1로 음수 표현

2의 보수

  • 어떤 수를 그보다 큰 2n에서 뺀 값

위에 설명을 좀 더 쉽게 구하는 방법은 모든 0과 1을 뒤집고 1을 더한 값

 

 

음수 인지 어떻게 알 수 있을까?

CPU 내부에는 레지스터에 플래그 레지스터란 게 있는데 현재값은 음수인지 양수인지 표기를 해준다 나중에 좀 더 자세히 배운다

십육 진법

이진법으로 표기하면 숫자의 길이가 너무 길어짐

십진수 32 === 이진법 100000과 같은데 길어지는 불편함이 있음

그래서 컴퓨터의 데이터를 표현할 때 십육 진법도 많이 사용

  • 숫자가 15를 넘어가면 자리올림을 하는 십육 진법

10을 A ,11을 B, 12을 C, 13을 D, 14를 E, 15를 F로 표현하고 그다음은 숫자로 표현한다

 

이진수를 십육 진수로 변환

십육 진수 1A2B를 이진수로 바꿀 때는 16은 2의 4 제곱이어서 1A2B를 네 개로 나눠서 1을 이진수 네 개로 표현하고 A를 이진수 네개로 구하고 각각 구해서 하나로 다시 합치면 이진수로 변환된다

 

십육 진수를 이진수로 변환

이진수 네 개를 십육 진수 하나라고 생각하면 된다

아래 그림처럼 앞에 숫자 네 개를 십육진수로 표현하면 D가 나오고 다음 네 자리를 십육진수로 표현하면 5가 나온다 이걸 합치면 D5 가 된다

 

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

문자 집합 (character set)

  • 컴퓨터가 인식하고 표현할 수 있는 문자의 모음

문자 인코딩

  • 코드화하는 과정
  • 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정

문자 디코딩

  • 코드를 해석하는 과정
  • 0과 1로 표현된 문자 코드로 문자로 변환하는 과정

정리하면 컴퓨터가 인식할 수 있는 문자들의 모음을 문자 집합, 이 문자들을 컴퓨터가 이해할 수 있는 0과 1로 변환하는 과정을 문자 인코딩, 반대로 0과 1로 표현된 문자 코드를 사람이 읽을 수 있는 문자로 변환하는 과정을 디코딩이라고 한다

아스키코드

초창기 문자 집합 중 하나로 영어 알파벳과 아라비아 숫자 그리고 일부 특수 문자를 포함합니다

아스키 문자 집합에 속한 문자 들은 각각 7비트로 표현되는데 7비트로 표현할 수 있는 정보의 가짓수는 2의 7 제곱으로 총 128개의 문자를 표현할 수 있다

0부터 127까지 숫자 중 하나의 고유의 수에 일대일로 아스키 문자가 대응되는데 고유한 숫자를 아스키코드 라고 한다 아스키코드를 이진수로 표현함으로써 아스키 문자를 0과 1로 표현할 수 있다

코드 포인트 (code point) === 문자에 부여된 값

아스키 문자는 이렇게 아스키코드로 인코딩 됩니다.

하지 마 아스키코드는 한글을 포함한 다른 언어 문자 다양한 특수 문자를 표현 불가

한글의 인코딩 방식

완성형 vs 조합형 인코딩 방식

한글의 특징

  • 알파벳은 한 줄로 이어 쓰면 단어가 되는 영어
  • 한글은 자음 모음 조합, 초성 중성 종성의 조합으로 이루어진 한글
  • 완성형 인코딩 방식과 조합형 인코딩 방식이 존재

완성형 인코딩 방식

한글의 완성형 인코딩 방식은 글자의 자음과 모음을 합쳐 이미 완성된 글자를 표현하는 방식이다. 보통 한글 자모음 변환을 위한 인코딩 방식으로 사용된다. 완성형 인코딩 방식은 각 글자를 따로 인코딩하기 때문에 인코딩할 글자의 수에 따라 인코딩 시간이 늘어난다.

조합형 인코딩 방식

한글의 조합형 인코딩 방식은 한글 자모음을 따로 인코딩하고, 따로 입력한 자모음들을 단어로 조합하는 방식이다. 이 방식으로 인코딩하면 자모음의 수에 따라 인코딩 시간이 늘어나지 않고, 단어를 인코딩할 때에도 인코딩 시간이 적게 든다.

EUC_KR

  • KS X 1001 KS X 1003 문자집합 기반의 한글 인코딩 방식
  • 완성형 인코딩 방식
  • 글자 하나하나에 2바이트 크기의 코드 부여
    • 2바이트 === 16비트 === 4자리 십육진수로 표현

유니코드

  • 통일된 문자 집합
  • 한글 영어 화살표와 같은 특수 문자, 심지어 이모티콘까지 표현 가능
  • 현대 문자 표현에 있어 매우 중요한 위치

유니코드의 인코딩 방식

  • utf -8, utf-16, utf-32 ….

utf -8 인코딩

유니코드 문자를 인코딩하는 방식 utf-8로 인코딩한 값은 가변 길이 인코딩이기 때문에 1바이트가 될 수도 4바이트가 될 수도 있다

유니코드 문자의 부여된 코드 포인트 범위에 따라서 그 코드 포인트를 형식에 맞게 넣어 주면 그게 인코딩 된 결과다

  • UTF(Unicode Transformation Format) == 유니코드 인코딩 방법
  • 가변 길이 인코딩: 인코딩 결과가 1바이트 ~4바이트
  • 인코딩 결과가 몇 바이트가 될지는 유니코드에 부여된 값에 따라 다름
  • 유니코드에 부여된 값 === 유니코드 코드 포인트
728x90
반응형