본문 바로가기
자료구조

[자료구조 1장] - 컴퓨터와 프로그램의 이해(1)

by jyppro 2023. 12. 23.

컴퓨터와 프로그램의 이해(1)

안녕하세요 해당 카테고리는 컴퓨터 공학을 전공하면서 배운 자료구조 지식을 다시한번 정리하고 공부하기 위해 작성하는 글입니다. 자료구조는 컴공이라면 반드시 알고 있어야 하는 학문이기 때문에 지속적인 공부가 필요합니다. 이 글은 정보를 소개 해준다기보다 내용 자체를 정리하는 것이기 때문에 긴 설명 대신 간략하게 요약되어 있을 수 있습니다.

 

컴퓨터와 데이터

컴퓨터의 사전적 정의 : 전자회로를 이용한 고속 자동 계산기

 

기능

입력 : 마우스, 키보드, 터치스크린 등

출력 : 모니터, 프린터 등

기억 : 메모리, 하드디스크, USB 등

처리 : 중앙처리장치(CPU)

 

컴퓨터의 구성 : 중앙처리장치, 기억장치(저장장치), 주변장치(입/출력)

 

하드웨어와 이진데이터

비트(bit) : CPU가 처리할 프로그램과 데이터를 저장하기 위한 주기억장치의 데이터의 기본단위

1개의 비트 : 0과 1로 구성(참/거짓, 켜짐/꺼짐 등)

바이트(byte) : 8개의 비트

데이터 연산을 위해 CPU의 레지스터에서 데이터를 가져옴, 연산이 끝나면 주기억장치에 저장

버스(bus) : 주기억장치와 CPU의 정보전달 신호선 통로

워드(word) : 한번에 버스에 실려보낼 수 있는 데이터의 양(보통 4 ~ 8 바이트)

 

진수의 변환

컴퓨터 하드웨어 : 0과 1 구분하는 전기신호 바탕 설계의 디지털 이진시스템(2진수)

진법변환 : 10, 2, 8, 16진법

 


자료의 표현

고정소수점 표현(fixed point representation) : 정수 표기

부동소수점 표현(floating point representation) : 실수 표기

 

정수의 표현

컴퓨터에 표현하는 정수 : 양수, 음수, 0

대부분 2진형이나 10진형도 사용함

2진형 표기 : 부호, 절대값, 초과코드, 1의 보수, 2의 보수 표현방식 존재

 

부호와 절대값 표기

어떤 수를 n비트의 고정길이로 표현 할 때, 최상위 한 비트는 부호표시에 사용, 나머지 n-1 비트로 절대값 숫자 표현

최상위 비트의 부호는 0일때 양수, 1일때 음수

 

초과코드 표기

-> 전자회로 숫자조작에 더 나은 방식

ex) 4비트로 표현된 8초과 코드표(1111 -> 7, 1000 -> 0, 0000 -> -8)

 

1의 보수 표기

보수 : 어떤 수를 완전수로 만들기 위한 보완수

1의 보수방식 : 완전수가 1인 경우

-> 기존의 2진수 0과 1을 뒤집기, 부호가 있는 0이 등장하는 단점 때문에 2의 보수방식 등장

 

2의 보수 표기

-> 완전수를 2로 하는 보수체계, 1의 보수표현에 1을 더한값

부호가 있는 0 제거, 수의 표현범위 음수쪽으로 1만큼 증가

현재 대부분 컴퓨터에서 사용하고 있는 표현방식

 

덧셈에서 발생하는 문제 : 4비트를 사용할 때, 9 표현불가 -> 5 + 4의 값이 -7로 나타남 => 범람(overflow)

2의 보수 덧셈에서 오버플로우는 부호가 같은 두 수를 더할 때만 일어나므로 오버플로우 발생여부 조사하려면 부호비트를 검사하면 된다.(양수끼리 더했는데 음수가 나옴, 음수끼리 더했는데 양수가 나옴)

 

실수의 표현

실수 : 부호, 지수, 가수 -> 3가지 정보 표현

 

부동소수점 표기

ex) 32비트에서 표현할 때 -> (0 ~ 31비트) 0 : 부호, 1 ~ 7 : 지수부, 8 ~ 31 : 소수 또는 정수부

 

8비트 예시

01101011 -> 부호 : 0, 지수 : 110, 가수 : 1011 (지수를 초과코드표기 방식으로 가정)

부호 : +

지수부분 : +2

가수 : .1011에서 소수점 오른쪽으로 두자리(+2) 이동 -> 10.11 => 2와 4분의 3

 

10111100 -> 부호 : 1, 지수 : 011, 가수 : 1100

부호 : -

지수부분 : -1

가수 : .1100에서 소수점 왼쪽으로 한자리(-1) 이동 -> .01100 => -8분의 3

 

2와 8분의 5를 표현할 때 5비트의 가수가 필요하나 4비트밖에 없기 때문에 가장 뒤에 1을 잃어버리는 절단오차 발생

=> 오차를 줄이기 위해선 필드를 크게 해야한다.

 

3분의 1처럼 소수로 나타냈을 때 무한소수가 되는 수는 마찬가지로 절단오차 발생 -> 한정된 비트로 표현 불가하기 때문

 

문자의 표현

사람과 컴퓨터 사이의 문자 변환

6비트 : BCD코드, 7비트 : ASCII코드, 8비트 : EBCDIC코드, 유니코드(unicode)

 

BCD코드

상위 2비트(zone) : 숫자인지 영문자인지 구분

64개 문자 표현 가능

 

ASCII코드

-> 미국 표준기구에 의해 만들어진 표준 코드, 128개 문자 표현가능, 상위 3비트(zone)

 

EBCDIC코드

-> 확장된 BCD코드, 256개 문자 표현가능, 보통 1개의 패리티 비트(통신용)를 첨가해 이용, 상위 4비트(zone)

4개의 zone비트 상위, 하위로 다른역할

알파벳 대소문자, 숫자, 몇개의 특수문자 표현 가능

 

유니코드

-> 국제표준코드, 2바이트를 조합하여 하나의 글자를 표현