[CS] 컴퓨터의 구조 - 데이터

이상혁·2023년 9월 9일
0

Computer science

목록 보기
2/15
혼자 공부하는 컴퓨터 구조 + 운영체제를 읽고 공부한 내용입니다.

0과 1의 숫자 표현

정보의 단위

컴퓨터는 0과 1으로만 정보를 표현하고 이해할 수 있다.
0과 1로 나타내는 가장 작은 단위를 비트라고 한다.

1비트는 두 가지로 표현이 될 수가 있는데 0과 1 바로 2가지이다.
그래서 컴퓨터는 2진법을 이해한다.
그러면 2비트는 총 몇개를 표현할 수 있을까?
하나의 비트에 총 2가지를 표한 수 있으니깐

0 0
0 1
1 0
1 1

총 4개의 정보를 표현할 수 있다.
3의 비트를 표현하면

0 0 0
1 0 0
1 1 0
1 0 1
0 1 0
0 1 1
0 1 0
0 0 1

총 8개의 정보 표현이 가능하다.

위 예시로 보았늘 때 한 가지 규칙이 보인다.
바로 n개의 비트는 2의 n승이다.
즉, 2비트는 2의 2승이고 3비트는 2의 3승이 되는 규칙을 가진다.

대부분의 프로그램은 수십만, 수백만 비트로 이루어져 있다.
이를 비트로 표현하는 것은 힘든 일이다.
그래서 8개의 비트가 모이면 1바이트라는 부른다.
즉, 단위가 비트에서 바이트로 변한다.

바이트가 1000개가 모이면 1킬로바이트
1킬로바이트가 1000개가 모이면 1메가바이트
1메가바이트가 1000개가 모미면 1기가바이트
1기가바타이트가 1000개가 모이면 1테라바이트가 된다.

이진법의 음수 표현

이진법을 음수로 표현하는 방법 중 가장 널리 사용되는 방법은 2의 보수이다.
2의 보수는 어떤 수를 그 보다 큰 2의n승에서 뺀 값을 의미한다.

이렇게만 설명을 하면 이해가 어려우니 쉽게 설명을 하자면
모든 0과 1을 뒤집고 그 값에 1을 더한 값으로 이해를 하면 된다.

예를 들어 11이라는 값이 있으면
각각에 자리의 1을 0으로 뒤집는다.
그러면 00이 될 것이고 거기에 + 1을 해주면
11의 음수의 값은 01이 된다.

그런데 01은 양수로도 존재한다.
그래서 컴퓨터에게 01이 양수인지, 음수인지 알려주어야 한다.
이 때 사용하는 것이 플래그이다.
플래그는 명령어나 데이터 cpu에 대한 부가 정보를 말한다.

16진법

컴퓨터는 0과 1의 2진법만을 이해한다고 했다.
2진법의 단점이 너무 길다는 것이다.
그래서 데이터를 표현할 때 16진법도 사용을 한다.

16진법은 수가 15를 넘어가는 시점에서 자리 올림을 한다.
15가 넘어가기 잔까지 0~9와 A~F를 사용한다.
16진법을 사용하는 이유는 2진수와 변환이 쉽기 때문이다.

16진법에서 숫자하나를 2진법으로 표현하기 위해서는 4비트가 필요하고
각각의 자리의 수를 4비트로 표현하고 붙혀주기만 하면 된다.

예시로
1A2B라는 16진법의 수가 있고
2진법으로 변환을 하면
1 = 0001
A = 1010
2 = 0010
B = 1011
으로 변환이 가능하고 이를 합치면
0001101000101011 으로 2진법으로 쉽게 변환이 가능하다

0과 1의 문자표현

문자집합과 인코딩, 디코딩

문자집합은 컴퓨터가 인식하고 표현을 할 수 있는 문자집단을 말하는 것이다.
문자집합에 a, b가 있다면 a ,b를 컴퓨터가 이해할 수 있지만 c는 이해를 할 수 없다.

하지만 문자집합에 속해 있다고 해서 컴퓨터가 그대로 이해를 할 수 있는 것은 아니다.
0과 1로 변환을 해야 이해를 할 수 있는데 이 변환 과정이 인코딩이다.

반대로 0과 1를 사람이 이해할 수 있는 문자로 변환화는 과정을 디코딩이라고 한다.

아스키 코드

아스키는 초장기 문자 집합이다.
영어 알파펫과 아라비아 숫자, 그리고 일부 특수 문자를 포함한다.
아스키 문자 집합에 속한 문자들을 각각 7비트로 표현이 된다.
7비트로 표현이 될 수 있는 정보의 수는 2의7승으로 128개가 표현이 가능하다.

EUC_KR

아스키 코드는 한글은 인코딩을 할 수 없다.
그래서 한글 인코딩 방식인 EUC_KR이 나왔다.

한글 인코딩에는 2가지 방식이 있다.
완성형 인코딩조합형 인코딩이다.

완성형 인코딩 방식은 한 글자 자체를 고유한 코드로 인코딩을 하는 것이다.
예시로
김철수라는 이름이 있다면 김, 철, 수 각각의 글자에 고유코드가 있는 것이다.

조합형 인코딩은 초성, 중성, 종성의 고유한 코드가 있고 이 코드들을 합치는 것이다.
예시로
ㄱ, ㅣ, ㅁ에 각각의 코드가 있고 이를 코드들을 합치는 것이다.

EUC_KR은 완성형 방식을 사용한다.

하지만 EUC_KR이 모든 한글을 표현할 수 있는 것은 아니다.
그래서 표현하지 못 하는 한글을 쓰는 경우 이상하게 나오는 문제가 발생한다.

유니코드

유니코드는 다른나라에 언어들도 문자집합에 포함을 하고 있어서 다른 나라의 언어를 지원할 때 각각의 인코딩을 다르게 해주어야하는 점을 덜어준다. 또한 EUC_KR보다 더 많은 한글을 포함하고 있어서 현대에 많이 쓰이고 있다.

유니코드는 인코딩 방식이 UTF-8, UTF-16, UTF-32가 있다.
이 중에서 가장 대중적으로 쓰이는 방법은 UTF-8이다.

profile
개발 공부 하기 위해 만든 블로그

0개의 댓글