컴퓨터와 프로그램의 이해(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바이트를 조합하여 하나의 글자를 표현
'자료구조' 카테고리의 다른 글
[자료구조 3장] - 배열과 구조체(1) (2) | 2024.01.02 |
---|---|
[자료구조 2장] - 프로그래밍 기초(3) (2) | 2024.01.01 |
[자료구조 2장] - 프로그래밍 기초(2) (2) | 2023.12.30 |
[자료구조 2장] - 프로그래밍 기초(1) (2) | 2023.12.27 |
[자료구조 1장] - 컴퓨터와 프로그램의 이해(2) (0) | 2023.12.24 |