관리 메뉴

나만을 위한 블로그

[혼공컴운] 2. 데이터 본문

책/혼자 공부하는 컴퓨터 구조 + 운영체제

[혼공컴운] 2. 데이터

참깨빵위에참깨빵_ 2023. 10. 31. 23:54
728x90
반응형
0과 1로 숫자를 표현하는 방법

 

정보 단위

 

컴퓨터는 0, 1만 이해한다. 이 두 숫자를 나타내는 가장 작은 정보 단위는 비트다.

1비트는 0, 1 두 가지 정보를 표현할 수 있다. 1비트는 2개, 2비트는 4개, 3비트는 8개의 정보를 표현할 수 있어서 n비트는 2^n개의 정보를 표현할 수 있다.

 

비트가 8개 모이면 1바이트(byte)다. 즉 1바이트는 2^8 = 256개의 정보를 표현할 수 있다.

1바이트를 1,000개 묶으면 1KB

1KB를 1,000개 묶으면 1GB

1GB를 1,000개 묶으면 1TB가 된다.

 

1KB를 1,024byte, 1MB를 1,024byte로 표현하는 것은 잘못된 관습이다. 1,024개를 묶어서 표현할 경우 KiB, MiB 식으로 기존 단위 사이에 소문자 i를 끼워넣는다.

 

이진법

 

이진법은 수학에서 0, 1만으로 모든 숫자를 표현하는 방법을 말한다. 이진법의 원리는 숫자가 1을 넘어가는 시점에 자리 올림을 한다.

이진법으로 표현된 숫자는 이진수, 십진법으로 표현된 숫자는 십진수라고 한다.

 

십진수 이진수
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000

 

이진수 끝에는 아래첨자 (2)를 작게 써서 붙이거나, 이진수 앞에 0b를 붙인다.

 

이진수의 음수 표현

 

0, 1만으로 음수를 표현하는 법 중 가장 많이 쓰이는 방식은 2의 보수를 구해서 이 값을 음수로 간주하는 것이다.

2의 보수는 어떤 숫자를 그 숫자보다 큰 2^n에서 뺀 값을 말한다. 11⑵을 대상으로 2의 보수를 구하면 11⑵보다 큰 2^n인 100⑵에서 11⑵을 뺀 01⑵이 된다.

 

2의 보수는 모든 0, 1을 뒤집고 거기에 1을 더한 값으로 이해해도 된다. 11⑵의 모든 0, 1을 뒤집으면 00⑵고, 1을 더하면 01⑵이다.

어떤 숫자를 대상으로 2의 보수를 2번 구하면 그 숫자가 나온다. "음수x음수=양수"인 것과 같다. 1011⑵을 대상으로 2의 보수를 2번 구하면 아래처럼 된다.

 

1011 > 0100 > 0101 > 1010 > 1011

 

그러나 이진수만으로는 음수, 양수 구분이 어렵다. 컴퓨터는 둘을 구분하기 위해 플래그를 사용해서 해당 숫자가 양수인지 음수인지 구분한다.

 

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

 

문자 집합 : 컴퓨터가 인식하고 표현할 수 있는 문자 모음

(문자) 인코딩 : 문자를 0, 1로 변환하는 과정

(문자) 디코딩 : 0, 1로 이뤄진 문자 코드를 문자로 변환하는 과정

 

아스키(ASCII) : 영어 알파벳, 아라비아 숫자, 일부 특수문자를 포함하는 초창기 문자 집합 중 하나. 각각 7비트로 표현되기 때문에 2^7 = 128개의 문자를 표현할 수 있다. 아스키 문자에 대응되는 고유한 숫자를 아스키 코드라 부른다

 

  • 장점 : 간단하게 인코딩할 수 있음
  • 단점 : 한글, 아스키 문자 외의 문자, 특수문자 표현 불가능. 128개보다 많은 문자를 표현할 수 없기 때문

 

EUC-KR

 

초성, 중성, 종성이 모두 합쳐진 한글 단어에 2byte 크기의 코드를 부여하는 완성형 인코딩 방식

 

  • 완성형 인코딩 방식 : 초성, 중성, 종성 조합으로 이뤄진 한 글자에 고유한 코드를 부여하는 방식
  • 조합형 인코딩 방식 : 초성, 중성, 종성마다 비트열을 할당한 다음, 모두 합해서 하나의 글자 코드를 만드는 방식. "김"이란 글자를 구성하는 ㄱ, ㅣ, ㅁ 글자마다 0001, 1010, 1111이란 비트열을 할당한 경우, 셋을 합쳐서 0001 1010 1111이라는 글자 코드를 만드는 식이다

 

유니코드, UTF-8

 

유니코드 : EUC-KR보다 다양한 한글을 포함하고 여러 나라의 문자, 특수문자, 화살표, 이모티콘을 코드로 표현할 수 있는 통일된 문자 집합. 현대 문자 표현에 가장 많이 쓰이는 표준 문자 집합

 

한글의 유니코드들을 모아둔 PDF 링크

https://unicode.org/charts/PDF/UAC00.pdf

 

UTF-8, UTF-16, UTF-32 : 유니코드 문자에 부여된 값을 인코딩하는 방식

반응형
Comments