320 likes | 954 Views
제 3 장 데이터의 표현. 구성. 진법과 진법 변환 연산과 보수 데이터의 표현 데이터 구조의 표현. 제 3 장 데이터의 표현. Data Types 수치 데이터와 문자 데이터 수치 데이터 : 산술 연산 문자 데이터 : 입출력/ data processing Binary information : memory or processor registers 에 저장 인간 정보 전달 : 언어, 그림, 문자, 숫자, 기호 디지털 컴퓨터 : 인간의 정보 체계 이해 못함. 공통적인 데이터 표현 방식.
E N D
제 3 장 데이터의 표현 구성 • 진법과 진법 변환 • 연산과 보수 • 데이터의 표현 • 데이터 구조의 표현
제 3 장 데이터의 표현 • Data Types • 수치 데이터와 문자 데이터 • 수치 데이터 : 산술 연산 • 문자 데이터 : 입출력/ data processing • Binary information : memory or processor registers에 저장 • 인간 정보 전달 : 언어, 그림, 문자, 숫자, 기호 • 디지털 컴퓨터 : 인간의 정보 체계 이해 못함 공통적인 데이터 표현 방식 자료의 외부적 표현 자료의 내부적 표현
진법과 진법 변환 • 진법 • 베이스(Base) or Radix(기수)rsystem : uses distinct symbols for r digits • 가장 일반적인 진법 :10진법(Decimal), 이진법(Binary), 8진법(Octal), 16진법(Hexadecimal) • 수 N의 표시 • d : 디지트(digit), r(radix or base) : 기수, n : 자릿수 • 10진법 • 10개의 부호로 구성 • 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 • 2진법 • 2개의 부호로 구성 • 0, 1 • Bit = Binary digit N = dn-1rn-1+dn-2rn-2+ … +d1r1+ d0r0+ d-1r-1+ d-2r-2+ … + d-m r-m
진법과 진법 변환 Hex Binary Decimal Oct 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0011 3 3 4 0100 4 4 50101 5 5 6 0110 6 6 7 0111 7 7 8 1000 8 10 9 1001 9 11 A 1010 10 12 B1011 11 13 C 1100 12 14 D 1101 13 15 E 1110 14 16 F 1111 15 17 Tab. 3-1 • 진법 • 16진법 • 16개의 부호로 구성 • 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F • 진법 변환 • n진수 10진수 • 2진수 10진수 (1011)2 = (1×23) + (0×22) + (1×21) + (1×20) = (11)10 (1011.101)2 = (1 x 23) + (0 x 22)+ (1 x 21) + (1 x 2o) + (1 x 2-1) + (0 x 2-2) + (1 x 2-3) = 810+ 0 + 210 + 110 + 0.510 + 0 + 0.12510 = 11.62510 • 8진수 10진수 (123)8 = (1×82) + (2×81) + (3×80) = 64 + 16 + 3 = (83)10 • 16진수 10진수 (1AB)16 = (1×162) + (A×161) + (F×160) = 256 + 160 + 15 =(431)10
진법과 진법 변환 • 진법 변환 • 10진수 n진수 • 10진수 2진수, 8진수, 16진수 (1) 10진수를 2의 거듭제곱으로 표현 56 = 32 + 16 + 8 = 25+ 24+ 23 = 1110002 (2) 10진수를 반복해서 2로 나눔 LSB 56 = 111000 MSB
진법과 진법 변환 • 예제 [3.2] 10진수 123.625를 2진수로 변환 소수점 변환 0.625x 2 = 1.250 integer 1 MSB 0.250 x 2 = 0.5 integer 0 0.500 x 2 = 1.0 integer 1 LSB Read the result downward .62510 = .1012
진법과 진법 변환 • 2진수를 8/16진수로 변환 • 8/16진수를 2진수로 변환 9F216 = 9 F 2 372.548 = 3 7 2 . 5 4 = 1001 1111 0010 = 011 111 010 101 100 = 1001111100102 = 0111110101011008 1 6 4 6 = 16468 1 1 1 0 1 0 0 1 1 02 = 0 0 1 1 1 0 1 0 0 1 1 0 3 A 6 = 3A616
연산 • 덧셈 • 2진수 덧셈 • 8진수 덧셈 • 16진수 덧셈
연산 • 뺄셈 • 곱셈 • 나눗셈 p. 162
보수 • 보수(Complements) • 용도 : 뺄셈 연산(subtraction operation), logical manipulation • r 기수 시스템(base r system) • (1) r의 보수 (2) (r-1)의 보수 • 2진수 : 2의 보수와 1의 보수 • 10진수 : 10의 보수와 9의 보수 • (r-1)의 보수 • D의 (r-1)의 보수 = (rn-1)-D • D=546700에 대한9의 보수 (106-1)-546700 = (1000000-1)-546700= 999999-546700 = 453299 • D=101101에 대한 1의 보수 (26-1)-101101= (1000000-1)-101101= 111111-101101 = 010010 • r의 보수 • D의 r의 보수 = rn-N • D= 2389에 대한 10의 보수 = 7610+1= 7611 • D= 1101100에 대한 2의 보수 = 0010011+1= 0010100 D : given number r : base n : digit number * r의 보수 (r-1)의 보수 +1 =(rn-1)-N+1= rn-N
보수를 이용한 뺄셈 (M-N), N0 • 부호가 없는 정수의 뺄셈 • r의 보수를 이용한 방법, r-1의 보수를 이용한 방법 ① 감수 N에 대한 r의 보수 또는 r-1의 보수를 구한다. ② ①에서 구해진 감수 N의 r의 보수 또는 r-1의 보수를 피감수 M과 더한다. ③ 자리올림이 발생되면 그 결과는 양수이다. r의 보수를 이용하여 피감수와 덧셈을 한 경우는 발생된 캐리를 버린다. r-1의 보수를 이용하여 피감수와 덧셈을 한 경우는 발생된 캐리를 최하위 비트에 더해준다. 즉, 덧셈을 한번 더 수행한다. ④ 자리올림이 발생되지 않으면 그 결과는 음수이다. 따라서 그 결과를 다시 r의 보수 혹은 r-1의 보수를 취해서 결과에 -기호를 붙인다.
보수를 이용한 뺄셈 • r의 보수를 이용한 뺄셈 예(M-N) • 1) M + (rn-N) • 2) M N : 결과는 양수 = M-N, 발생된 end carry는 버린다. • 3) M N : 결과는 음수 = - r’s complement of (N-M), No Carry 72532(M) - 13250(N) = 59282 72532 + 86750 (13250의 10의 보수) 1 59282 Result = 59282 1010100(X) - 1000011(Y) = 0010001 1010100 + 0111101 (1000011의 2의 보수) 1 0010001 Result = 0010001 M N 13250(M) - 72532(N) = -59282 13250 + 27468 (72532 의 10의 보수) 0 40718 Result = -(40718의 10의 보수) = -(59281+1) = -59282 M N No End Carry Discard End Carry 1000011(X) - 1010100(Y) = -0010001 1000011 + 0101100 (1010100 의 2의 보수) 0 1101111 Result = -(1101111의 2의 보수) = -(0010000+1) = -0010001 X Y X Y
보수를 이용한 뺄셈 • r-1의 보수를 이용한 뺄셈 예(M-N) • 1) M + (rn-1-N) • 2) M N : 결과는 양수 = M-N, 발생된 end carry를 한번 더 Addition • 3) M N : 결과는 음수 = - (r-1)’s complement of (N-M), No Carry 72532(M) - 13250(N) = 59282 72532 + 86749 (13250의 9의 보수) 1 59281 + 59282 Result = 59282 1010100(X) - 1000011(Y) = 0010001 1010100 + 0111100 (1000011의 1의 보수) 1 0010000 + 1 0010001 Result = 0010001 M N M N 13250(M) - 72532(N) = -59282 13250 + 27467 (72532 의 9의 보수) 0 40717 Result = -(40717의 9의 보수) = -(59282) = -59282 No End Carry Discard End Carry 1 1000011(X) - 1010100(Y) = -0010001 1000011 + 0101011 (1010100 의 1의 보수) 0 1101110 Result = -(1101110의 1의 보수) = -(0010001) = -0010001 X Y X Y
데이터의 표현 수치 데이터 형식(numeric data) 문자 데이터 형식(character data) • 수치 데이터 형식 • 고정 소수점 표현(Fixed-Point Representation) • 레지스터에서 소수점의 위치 표현(2가지 방법) • 레지스터의 가장 왼쪽에 있다고 가정(Fraction : 0.xxxxx) • 레지스터의 가장 왼쪽에 있다고 가정(Integer : xxxxx.0) • 고정 소수점 표현 방식 (1) Fixed Point (2) Floating Point ∵ 실제로 소수점은 레지스터 내부에 나타나지는 않으며 레지스터에 저장된 수를 정수로 취급할 것인가 혹은 소수로 취급할 것인가에 따라 소수점의 위치는 항상 고정되어 있다. Fig. 3-1
데이터의 표현 부호 비트 0 : 양수 1 : 음수 +14 -14 0 0001110 1 0001110 0 0001110 1 1110001 0 0001110 1 1110010 • 정수 표현 • 부호 절대값(Signed-magnitude) 표현 • 부호와 1의 보수(Signed-1’s complement) 표현 • 부호와 2의 보수(Signed-2’s complement) 표현 • 수의 범위(n비트 레지스터) • 부호 절대값 • 부호와 1의 보수 • 부호와 2의 보수 : -0이 존재 않음 -(2n-1-1)∼(2n-1-1) -(2n-1-1)∼(2n-1-1) -(2n-1)∼(2n-1-1)
데이터의 표현 • 수치 데이터 형식 • 부동 소수점 표현(Floating-Point Representation) • 지수 부분(exponent part) • 가수 부분(mantissa part) • Bias-64 • 지수 부분의 양수와 음수를 구분 • 지수값 + 6410 혹은 4016 Fig. 3-2 양의 지수 127 가수부분의 유효자리수 바로 왼쪽에 소수점이 존재하는 것으로 가정하여 가수 부분의 값이 0.1에서 1사이에 있도록 정규화(normalize)하여 표현 65 41 64 40 (100) (160) 63 3F 음의 지수 0
데이터의 표현 • 예 • 32비트, 기수 r=16, -(35.5)10을 부동 소수점 표현 • (1) 10진수 16진수로 변환 -(35.5)10 = -(23.8)16 • (2) 정규화 (normalize) -(23.8)16 = -(0.238)×162 • 지수값 + 바이어스 값 = 2 + 40 = 42
데이터의 표현 • 10진수 데이터 • 팩 10진법 형식 • 양수(+) : C(1100), 음수(-) : D(1101), 부호 없는 양수 : F(1111) • 언팩 10진법 형식 • 양수(+) : C(1100), 음수(-) : D(1101), 부호가 없는 양수 : F(1111)
데이터의 표현 수치 데이터 형식(numeric data) 문자 데이터 형식(character data) • 문자 데이터 형식 • 코드 : 영문자, 소수점, 마침표 등의 특수 기호 포함 • 이진 코드(binary code) • BCD 코드 • BCD(Binary Coded Decimal) : 10진수 표현 • 4비트, 0~9까지의 수를 표현, 가중치 코드, 일명 8421 코드 8 7 4 (Decimal) 1000 0111 0100 (BCD) • BCD와 2진수의 비교 13710 = 100010012 (Binary) - require only 8 bits 13710 = 0001 0011 0111BCD(BCD) - require 12 bits
데이터의 표현 • 기타 이진 코드 • Gray 코드 : 인접 코드간에 하나의 비트만이 변화 • 3초과 코드 • BCD 코드 + 0011(3) • 자기 보수(self complement) 성질(10, 01로 바꾸면 쉽게 보수를 얻음) 십진수 7의 9의 보수는 2 3초과 코드 1010 0101 • 알파뉴메릭 코드 • ASCII 코드 • Standard alphanumeric binary code • 7비트 • 128개의 서로 다른 정보 표현 • EBCDIC 코드 • 확장형 BCD 코드 • 8비트, 대형 컴퓨터에서 많이 사용하는 코드, 주로 IBM 장비
Transmitter Receiver ~ ~ 데이터의 표현 • 에러 검출 및 정정 코드 • 외부 환경(잡음)으로 인한 전송 중의 정보 변질 • 패리티 비트 (parity bit) : 메세지 비트 + 여분 비트(odd/even) • 짝수(even) 패리티 • 전체 1의 개수(패리티 비트를 포함)가 짝수 개 가 되도록 패리티 비트를 추가 1 1 0 0 0 0 1 1 • 홀수(odd) 패리티 • 전체 1의 개수(패리티 비트를 포함)가 홀수 개 가 되도록 패리티 비트를 추가 1 1 0 0 0 0 0 1 Added parity bit Added parity bit
데이터의 표현 • 에러 검출 및 정정 코드 • 해밍 코드(Hamming code) • 에러 정정 코드(error correction code) • 한 비트의 에러를 검출하고 정정 • 정보 비트의 수 m, 패리티 비트의 수 p • 예 : 8비트의 정보를 갖는 짝수 해밍 코드의 예 정보 비트 m = 8, 위의 식에 의해 p=4 • 패리티 비트의 위치 선정, 2p자리, 즉 1, 2, 4, 8 등에 대응하는 수의 자리에 위치 • 2p≥ m + p + 1
데이터의 표현 • P의 값 결정 • P1: 1, 3, 5, 7, 9, 11, 13 위치의 비트를 점검하여 1의 개수가 짝수 • P2: 2, 3, 6, 7, 10, 11, 14 위치의 비트를 점검하여 1의 개수가 짝수 • P4: 4, 5, 6, 7, 12, 13 위치의 비트를 점검하여 1의 개수가 짝수 • P8: 8, 9, 10, 11, 12, 13 위치의 비트를 점검하여 1의 개수가 짝수 • 해밍 코드를 이용한 오류 정정 P1 = 1, 3, 5, 7, 9, 11에서 1의 수가 짝수 개이므로 0 P2 = 2, 3, 6, 7, 10, 11에서 1의 수가 홀수 개이므로 1 P4 = 4, 5, 6, 7, 12에서 1의 수가 홀수 개이므로 1 P8 = 8, 9, 10, 11, 12에서 1의 수가 짝수 개이므로 0 에러 체크 워드 1의 개수 홀수 : 1 1의 개수 짝수 : 0
데이터 구조의 표현 • 데이터 구조의 표현 • 데이터 처리 효율성에 영향 • 중앙처리장치 기억장치 : 고유의 주소가 부여 • 1차원 기억 공간의 구조(기억 용량 N) 자료교환 : word
데이터 구조의 표현 • 선형 리스트(linear list) • 1차원벡터 형식의 데이터 구조 • 큐(queue), 스택(stack), 데크(dequeue) • FIFO, LIFO, 혼합 Fig. 3-7
데이터 구조의 표현 Fig. 3-8 Fig. 3-9
데이터 구조의 표현 • 링크드 리스트(linked list) • 다음 데이터 요소의 주소를 나타낼 수 있는 데이터 구조 Fig. 3-10 Fig. 3-11
데이터 구조의 표현 • 링크드 리스트(linked list) • 데이터 첨가 전과 후 Fig. 3-12
데이터 구조의 표현 • 링크드 리스트(linked list) • 데이터 삭제 전과 후 Fig. 3-13
데이터 구조의 표현 • 비선형 구조(nonlinear structure) • 2차원벡터 혹은 행렬 구조 • 열 우선(column-wise) 선형 리스트 : 사람들의 성명, 평균 연령, 급여 평균 값 • 행 우선(row-wise) 선형 리스트 : 어느 특정 인물에 대한 인적 사항 Tab. 3-13
데이터 구조의 표현 • [그림 3-14]와 [그림 3-15]의 단점을 보완할 수 있는 구조 Fig. 3-16