사망년/컴퓨터구조

chapter 02 자료 표현

stop-zero 2023. 9. 19. 14:00

자료의 구성단위

파일은 개념적으로 자료의 집합이다. 파일 시스템은 파일 내용과 파일의 상태정보로 이루어져 있다. 파일의 상태 정보에는 파일을 수정, 저장, 삭제한 내역들이 담겨 있다.

저장 내용에 따라 프로그램 파일(원시 프로그램 파일, 목적 프로그램 파일, 실행 파일)과 데이터 파일로 나뉜다. 저장 정보의 형태에 따라서는 텍스트 파일과 이진 파일로 나뉜다.   

필드(field)는 특정한 한 종류의 자료를 포함하는 기억 영역의 최소 단위이다. 예를 들어 재고 파일의 품명 번호나, 색코드 등이 필드이다. 

레코드(record)는 실제로 읽고 쓰는 단위로서 사용되는 자료 단위이다. 고정 길이 레코드는 크기가 너무 작으면 남는 문자열이 잘리고 크기가 너무 크면 저장 공간이 낭비된다. 가변 길이 레코드는 레코드의 정확한 위치를 파악하기 어렵지만 순차처리에 적합하고 저장공간을 활용하기에 아주 유용하다. 

정리하자면 필드가 모여서 레코드, 레코드가 모여서 하나의 파일을 구성한다.  

 

수의 체계와 변환

수의 체계

진법 R로 표현한 수의 체계

진법 변환

2진수 → 10진수 변환

 

10진수 → 2진수 변환

0.875 x 2 = 1.75
0.75 x 2 = 1.5
0.5 x 2 = 1.0

각각의 결과는 0.85보다 작으며 0.85에 근접한 결과를 얻기 위해서는 더 많은 비트가 필요하다.

 

10진수 → 8진수 변환

 

8진수 → 10진수 변환

 

8진수 → 2진수 변환

8진수 0 1 2 3 4 5 6 7
등가 2진수 000 001 010 011 100 101 110 111

2진수와 8진수 사이의 변환은 쉽다. 8진수에서 2진수로의 변환은 각 8진 디지트를 같은 값의 2진수로 변환함으로써 수행한다. 8진수에서 가장 큰 디지트는 7이며, 따라서 8진수에서 셈할 때 디지트는 0~7까지 상향 증가한다. 

예를 들어 473은 100 111 011과 등가이다. 

 

10진수 → 16진수 변환

 

16진수 → 10진수 변환

 

숫자코드 

BCD(Binary-Coded-Decimal code)

BCD코드는 2진화 10진 코드 혹은 8421코드라고 부르며 10진수의 각 비트를 4비트의 2진수로 나타낸다. 즉, 한 자리의 10진수를 나타내기 위해 2진수 4자리가 필요하다. 0000~1001까지는 사용하지만, 1010, 1011, 1100, 1101, 1110, 1111은 금지된 비트로 하나라도 발생하면 에러를 의미한다. 10진수로 또는 10진수로부터의 변환이 용이하다. 2진수보다 더 많은 비트들을 필요로 해서 2진수보다 더 복잡하다. 

 

3 초과 코드(excess 3 code)

8421 코드 표현에 2진수 0011을 더해서 표현한 코드이다. 가중치가 없는 코드인 만큼 non-weighted 코드이다. 보수를 간단하게 알 수 있고, 2진수가 전부 0이 되지 않으므로 신호가 없는 것과 0이 구별된다. 

가중치 코드 : 일정한 가중치가 있는 코드 

 

2421 코드 : 맨 처음 수의 값이 2이기에 4까지는 8421 코드와 같고 5부터 다르다. -> 자보수 코드

51111 코드 : 1~4까지 하나씩 왼쪽으로 늘고, 6~9까지는 오른쪽으로 늘어난다.

5421 코드 : 맨 왼쪽 비트가 0이면 4 이하의 10진수, 1이면 6 이상의 10진수

 

그레이 코드 

그레이 코드는 최소 변화 코드로 다음 단계로 갈 때 비트가 하나씩 변화한다. 코드군에서 비트들이 할당된 어떤 가중치도 갖지 않는 코드이다. 첫비트는 그대로 사용하고 두번째 비트부터는 앞 비트와 XOR한 값을 사용한다. 2진수의 앞 비트와 뒤 비트가 같으면 0, 다르면 1이다. 

1001→1101

 

문자 코드

EBCDIC(Extended Binary Coded Decimal Interchange Code)

IBM에서 개발한 내부 표시에 사용되는 문자 코드이다. 4개의 존비트와 4개의 숫자 비트로 구성되고, 256개의 숫자, 영문자, 특수 문자 등을 표현한다. 정보 교환을 위한 코드가 아니기에 패리티 비트는 존재하지 않는다. 

ASCII(American Standard Code for Information Interchange)

미국에서 표준화한 정보교환용 외부 통신 코드로 3개의 존 비트과 4개의 숫자 비트로 구성되어 있다. 추가로 제어를 위한 1비트가 있다. 

 

에러 검출 코드

데이터가 변질되는 원인인 에러를 송수신간의 정확한 정보를 위해 에러 제어가 필요하다. 가장 보편적인 방법은 에러를 검사하여 직접 정정하거나 송신 측에 재선송을 요청한다. 

 1. 에러 검출 부호 

1) 패리티 검사 방식

홀수 패리티를 사용할 경우 1의 개수를 홀수로 하기 위해 패리티 비트를 1로 지정한다. 수신 측은 패리티 비트를 포함한 데이터에서 1의 개수를 세어 홀수인지 판단하고 홀수가 아니면 재전송을 요청하게 된다. 전송하고자 하는 데이터가 1101001이면 패리티 비트를 추가해 11101001을 최종 전송한다. 이는 2개의 비트에 모두 오류가 발생한다면 오류를 검출할 수 없게된다는 단점이 있다. 

2) 블록 합 검사(Block Sum Check)

이차원의 패리티 검사방식으로 가로와 세로로 두 번 관찰한다.  오류를 검출할 가능성이 높아졌고 1비트 패리티 검사 방식의 단점을 보안하였다. 예를 들어 짝수 패리티를 사용하면 VRC 문자에 1의 개수가 짝수 또는 홀수에 따라 비트를 1 또는 0으로 전송한다. 지능이 없는 터미널에서도 사용가능하지만 훼손된 비트가 동시에 2개가 생기면 에러를 검출할 수 없다. LRC는 전화선에서 생기는 에러율을 개선할 수 있다. 

3) CRC(Cyclic Redundancy Check)

다수의 비트에 의한 에러 검출로 ARQ(검출 후 재전송) 방식에 의한 에러 검출 방식이다. ARQ에 의한 방식이기에 부가적인 데이터 비트에 의한 대역폭이 증가된다. 부호화는 각 비트들의 값으로 하나의 함수를 만드는 과정이다. 정보 비트를 전송 비트의 다항식에 의한 표현으로 변환한다. 

 

2. 에러 정정 부호 

1) 해밍(hamming) 부호

해밍 거리는 부호어 중, 같은 비트수를 갖는 2진 부호 사이에 대응하는 비트 값이 일치되지 않는 개수이다. 해밍거리는 2진 부호 사이에 대응하는 비트값이 일치되지 않는 개수이다. A={11001}, B={11010}인경우 두 점 간의 해밍거리는 2이다. 패리티 비트와 데이터 비트는 1, 2, 4, 8번째 위치에 삽입된다.

1 2 3 4 5 6 7 8 9 10 11 12
P0 P1 1 P2 0 1 1 P3 0 0 1 1

P0 영역은 자기에서부터 한칸씩 떨어진 위치이다. 1의 개수가 홀수이면 1, 짝수이면 패리티 비트를 0으로 지정하는 짝수 패리티를 사용하여 P0이 결정된다. 

 

2) 길쌈 부호

현재의 입력이 과거의 입력에 영향을 받아 부호화하는 방법으로 오류 정정 능력에 대한 신뢰성이 있다. 수신 측에서 가장 근접한 후보인 디코딩 트리를 선택하여 부호를 복조한다. 

 

 

김창환 [컴퓨터구조] 복두출판사 p.48~89

'사망년 > 컴퓨터구조' 카테고리의 다른 글

버스 중재 방식  (1) 2023.12.05
CPU의 기본 구조  (2) 2023.12.03
캐시 사상방식  (0) 2023.12.03
chapter 03 산술과 논리연산  (0) 2023.09.24
Chapter 01 컴퓨터 시스템 개요  (0) 2023.09.11