본문 바로가기

CS공부🖥️/운영체제

혼공 컴+운 chapter2. 데이터

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

정보 단위

  • 비트 : 0과 1을 나타내는 가장 작은 정보 단위 n비트는 2^n가지 정보를 표현
1바이트(1byte) 8비트(8bit)
1킬로바이트(1kB) 1,000바이트(1,000byte)
1메가바이트(1MB) 1,000킬로바이트(1,000kB)
1기가바이트(1GB) 1,000메가바이트(1,000MB)
1테라바이트(1TB) 1,000기가바이트(1,000GB)

워드 : CPU가 한 번에 처리할 수 있는 데이터 크기 ex) CPU가 한 번에 16비트를 처리할 수 있다면, 1워드는 16비트

이진법

이진법 : 0과 1만으로 모든 숫자를 표현하는 방법. 1을 넘어가는 시점에 자리 올림을 한다.

십진법 : 숫자가 9를 넘어가는 시접에 자리 올림을 하여 0부터 9까지, 열 개의 숫자만으로 모든 수를 표현하는 방법- 숫자 10을 보고 십진 수인지 이진수인지 구분 하기 위해 이진수는 수학적으로 표기할 때는 끝에 아래첨자(2)를 붙이거나, 코드 상에서는 0b를 붙인다.

이진수의 음수 표현

2의 보수를 구해서 이 값을 음수로 간주한다.

11 => 00 => 01 이렇게 모든 0과 1을 뒤집고 거기에 1을 더한 값으로 음수 표현

- 이진수만 봐서는 이게 음수인지 양수인지 구분하기 어렵다. 구분하기 위해 플래그 사용.

십육진법

수가 15를 넘어가는 시점에 자리 올림을 하는 숫자 표현 방식

- 10~15는 A,B,C,D,E,F로 각각 표기. 16부터는 10으로 자리를 올림 해준다.

십육진수를 이진수로 변환하기

십육진수 한 글자를 4비트의 이진수로 간주. 각 글자를 따로따로 4개의 숫자로 구성된 이진수로 변환하고, 그것들을 그대로 이어 붙인다.

이진수를 십육진수로 변환하기

이진수 숫자를 네 개씩 끊고, 끊어 준 네 개의 숫자를 하나의 십육진수로 변환한 뒤 그대로 이어 붙인다. 

필수 문제

3. 1101(2)의 음수를 2의 보수 표현법으로 구해보세요.

1101 => (모든 0과 1 뒤집기) 0010 => (1더하기) 0011

1101(2)을 음수로 표현한 값은 0011 입니다.

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

문자 집합과 인코딩

  • 문자 집합 : 컴퓨터가 인식하고 표현할 수 있는 문자 모음. 
  • 문자 인코딩 : 문자 집합에 속한 문자라고 해서 컴퓨터가 그대로 이해할 수 있는 건 아니다. 문자를 0과 1로 변환 과정을 문자 인코딩이라 한다.
  • 문자 디코딩 : 인코딩의 반대 과정, 즉 0과 1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정

아스키코드

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

EUC-KR

아스키 코드는 문자 집합 외의 문자, 특수 문자도 표현 불가능 그래서 한글 인코딩을 하기 위해 한글 인코딩 방식 등장

  • 완성형 인코딩 : 초성, 중성, 종성의 조합으로 이루어진 완성된 하나의 글자에 고유한 코드를 부여하는 인코딩 방식.
  • 조합형 인코딩 : 초성을 위한 비트열, 중성을 위한 비트열, 종성을 위한 비트열을 할당하여 그것들의 조합으로 하나의 글자 코드를 완성.

EUC-KR은 완성형 인코딩

EUC-KR의 문제점 해결 => CP949

유니코드와 UTF-8

유니코드는 대부분의 나라의 문자, 특수문자, 화살표나 이모티콘까지도 코드로 표현가능.(표준문자집합)

UTF-8은 통상 1바이트부터 4바이트까지의 인코딩 결과를 만들어 낸다.