컴퓨터구조 + 운영체제

[컴퓨터 구조 + 운영체제] 2일차 - 0과 1로 숫자와 문자를 표현하는 방법

Hwone 2023. 8. 11. 11:30

기본 지식 

비트: 0과 1을 표현하는 가장 작은 단위 

-n비트로 2^n 가지의 정보를 표현 가능하다 

-프로그램은 수많은 비트로 이루어져 있다 

-하지만 실생활에서는 비트보다는 더 큰 단위를 사용한다 

1byte == 8bit

1kB == 1000byte

1MB == 1000kB

1GB == 1000MB

1TB == 1000GB

워드 :  CPU 가 한번에 처리할 수 있는 정보의 크기

문자 집합 : 컴퓨터가 이해할 수 있는 문자의 모음

인코딩 : 코드화 하는 과정, 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정 ( 사람-> 컴퓨터 )  

디코딩 : 코드를 해성하는 과정, 0과 1로 표현된 문자 코드를 문자로 변환하는 과정 ( 컴퓨터 -> 사람) 

 

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

이진법 

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

*우리가 일상적으로 사용하는 진법은 숫자가 9를 넘어가는 시점에 자리올림 한 십진법을 쓴다 

코드에서 이진법을 표기하는 방법 

ex) 이진수 8 표기 ->0b1000

0과 1을 음수로 표현하기 (2의 보수) 

모든 0과 1을 뒤집고 1 더한 값으로 쉽게 구할 수 있다 

ex) 이진수 11 표기 -> 00 -> 01 

*겉모습만 보면 양수인 이진수랑 구분할 수 없지만 CPU에는 플래그 레지스터가 있어서 구분이 가능하다 

(모든 숫자에는 CPU안에서 플래그 라는 표식을 가지고 다닌다) 

 

십육진법 

15를 넘어가는 시점에 자리올림

코드에서 십육진법을 표기하는 방법 

ex) 십육진법 15 표기 -> 0x15 

*이진수와 십육진수의 변환하는 방식이 십진수 보다 간편하여 십육진수를 변환하는 방법을 쓴다 

 

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

아스키 코드 

알파벳, 아라비아 숫자, 일부 특수문자 및 제어문자를 표현 

7비트로 하나의 문자를 표현한다 

(실제로는 8비트 이다 이 중 1비트는 오류 검출을 위해 사용되는 패리티비트이다) 

아스키 코든 2^7개 즉, 128개의 문자를 표현할 수 있다 

A는 65로 인코딩, a는 97로 인코딩 

장점 : 간단한 인코딩 

단점 : 다른 언어문자, 다양한 특수문자 표현 불가 

 

유니 코드 

통일된 문자 집합으로 현대 문자표현에 있어서 매우 중요한 위치이다

인코딩 방식은 utf-8, utf-16, utf-32 등 여러가지가 있다 

대중적으로 utf-8 방식을 쓰는데 가변길이 인코딩으로 결과가 1바이트 ~ 4바이트가 될 수 있다 

 

문제 해결 Tip

개발 중 올바르게 코드를 작성했는데 글자가 깨진다면 ? 

인코딩이 호환되지 않는 것은 아닌지, 문자집합에 사용되지 않는 문자를 사용하고 있는 건 아닌지에 대해 생각해 볼 수 있다