공부/컴퓨터구조

[ 컴퓨터구조 ] 데이터

haena02 2023. 1. 11. 02:54
반응형

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


컴퓨터는 0과 1로 모든 정보를 표현하고 이해한다.

1.1 정보단위


컴퓨터는 0과1밖에 이해하지 못한다.
0과 1을 나타낸느 가장 작은 정보 단위를 비트라고한다.
n개의 비트가 있을 때 2^n개의 정보를 표현할 수 있다.

우리가 실핸하는 모든 프로그램은 수십, 수백만 비트로 미루어져있다.
하지만 우리가 프로그램의 용량을 말할때 23238432981비트야! 라고 말하지는 않는다 ㅋ

  • 1바이트(byte) - 8비트
  • 1킬로바이트(kB) - 1000비트
  • 1메가바이트(MB) - 1000킬로바이트
  • 1기가바이트(GB) - 1000메가바이트
  • 1테라바이트(TB) - 1000기가바이트

* 워드(word) : CPU가 한번에 처리할 수 있는 데이터의 크기이다. 대부분의 컴퓨터는 32비트혹은 64비트이다.

1.2 이진법


0과 1로만 숫자를 표현하는 방법을 이진법이라고 한다.
2진법으로 숫자를 표현하는 것은 어렵지 않다.
숫자를 1씩 증가시킨다고 생각하면 0→1 로 증가시켜주고 이미 1이라면 1을 올려주고 0으로 돌려주면 된다.(1→10)

그렇다면..! 음수는 어떻게 표현할까?
컴퓨터는 바보기 때문에 - 조차 0과 1로 표현해줘야한다.

가장 많이 사용하는 방법은 2의보수를 이용하는 것이다.
2의 보수는 어떤 수를 그보다 큰 2^n에서 뺀 값이다.
하지만 저렇게 어렵게까지 이해할 필요는 없고 모든 0과1을 뒤집고 거기에 1을 더한 값이라고 알고있어도된다.

1011을 예시로 들어보면
모든 0과 1을 뒤집고 (0100)
1를 더한 값 (0101)

그렇다면 0101이 1011의 음수인지 혹은 정말 0101 그 자체인지 어떻게 알까!?!?!??!?
이를 알게 하기 위해 플래그(flag)라는 것을 사용한다.

1.3 십육진법


2진수로 숫자를 표현하면 너무 길어지기에 십육진수도 자주사용한다.
십육진법은 15에서 자리를 올려주는 숫자 표현 방식이다.
16진수는 0부터9까지, A부터 F까지로 표현한다.
숫자 앞에 0x가 있다면 16진수라는 뜻이다.

1.4 십육진수↔이진수로 변환하기


십육진수에서 2진수로 변환할때는 긱각 16진수 한 자리를 2진수 4자리로 바꾼뒤 연결하면된다
이진수에서 십육진수로 변환할때는 2진수를 4개씩 끊어서 각각 16진수로 바꾼뒤 연결하면된다. ez~

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


컴퓨터는 0과 1밖에 모르는데 어떻게 문자를 이해할까?

2.1 문자 집합과 인코딩


이 내용을 공부하기위해 용어 세개를 기억하자

  • 문자 집합 : 컴퓨터가 인식하고 표현 할 수 있는 문자의 모음
  • 문자 인코딩 : 문자집합에 속한 문자라고 단번에 컴퓨터가 이해하지는 못한다 이를 0과1호로 바꾸는 과정
  • 문자 디코딩 : 0과 1로 이루어진 문자들을 사람이 이해할 수 있는 문자로 변환 하는 과정

2.2 아스키코드

아스키는 초창기 문자 집합 중 하나로, 영어 알파벳과 아라비아 숫자, 그리고 일부 특수 문자를 포함한다.
아스키 문자 집합에 속한 문자들은 각각 7비트로 표현되기 떄문에 총 128개의 문자를 표현할 수 있다
(사실 1바이트인데 1비트는 오류검출을 위해 활용되고있음)

아스키코드표

아스키코드의 단점은 한글, 특수문자들을 표현할 수 없다.
이에 1비트를 추가한 확장 아스키가 나왔지만 그또한 고작 256개이기 때문에 부족하다.

2.3 EUC-KR


영어와 다르게 한글은 초성,중성, 종성의 조합으로 이루어져있다.
그래서 한글인코딩에는 완성형과 조합형이 존재한다.
완성형 인코딩 방식은 초성, 중성, 종성의 조합으로 이루어진 완성된 하나의 글자에 고유한 코드를 부여하는 인코딩 방식이고 조합형 인코딩 방식은 초성을 위한 비트열, 종성을 위한 비트열, 종성을 위한 비트열을 할당하여 그것들의 조합으로 하나의 글자 코드를 완성하는 인코딩 방식이다.

초성, 중성, 종성이 모두 결합된 한글 단어에 2바이트의 크기가 부여된다.
즉 16비트가 필요한 것이고 이는 16진수 4자리로 표현 가능하다.

EUC-KR 인코딩 방식은 완성형 인코딩 방식으로 총 2350개 정도의 한글단어를 표현할 수 있다.
그럼에도 쀍, 쀓,믜 와 같은 글자는 표현할 수 없다.

이를 해결하는 방법으로 EUC-KR 를 확장한 CP949가 나왔다.

2.4 유니코드와 UTF-8

모든 나라의 인코딩 방식이 다르다면 다국어를 지원하는 프로그램을 만들어야할때 귀찮을것이다 ㅋㅋ
그래서 모든나라의 인코딩 방식을 통일하기 위해 나온 것이 유니코드이다.
유니코드는 여러나라의 문자,특수문자, 이모티콘을 다 표현할 수 있다

유니코드는 각 문자마다 고유한 값이 주어진다.
예를 들어 '한'은 0xD55C 이런식

유니코드는 인코딩 방법이 여러가지이다.
종류로는 UTF-8, UTF-16, UTF-32가 있고 가장 대중적인건 UTF-8이다.

UTF-8으로 인코딩한 값은 1~4바이트가 된다.
인코딩방법은 굳이 알필요없다!

반응형