Computer System Architecture 제 3 장 데이터의 표현 컴퓨터구조 Computer System Architecture 멀티미디어공학과 김 해영 hykim@tu.ac.kr
제 3 장 데이터의 표현 진법과 진법 변환 연산과 보수 데이터의 표현 구성
제 3 장 데이터의 표현 Data Types 수치 데이터와 문자 데이터 수치 데이터 : 산술 연산 문자 데이터 : 입출력/ data processing 인간 정보 전달 : 언어, 그림, 문자, 숫자, 기호 디지털 컴퓨터 : 인간의 정보 체계 이해 못함 공통적인 데이터 표현 방식 자료의 외부적 표현 : 인간사용언어 컴퓨터 사용 데이터로 표현 자료의 내부적 표현 : 컴퓨터 내부에서 0 과 1 부호화 저장처리
진법과 진법 변환 진법 가장 일반적인 진법 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
진법과 진법 변환 진법 Tab. 3-1 16진법 16개의 부호로 구성 Hex Binary Decimal Oct 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0011 3 3 4 0100 4 4 5 0101 5 5 6 0110 6 6 7 0111 7 7 8 1000 8 10 9 1001 9 11 A 1010 10 12 B 1011 11 13 C 1100 12 14 D 1101 13 15 E 1110 14 16 F 1111 15 17 진법 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진수 (1AF)16 = (1×162) + (A×161) + (F×160) = 256 + 160 + 15 = (431)10 Tab. 3-1
진법과 진법 변환 진법 변환 (10진수 n진수) 56 = 32 + 16 + 8 정수부분 : 정수부분 N을 n진수의 기수 n 으로 나눈 후 나머지를 구하고 몫이 0이 될 때 까지 계속 나눈다. 각 단계에서 나머지를 나눈 순서의 역순으로 나열한다. 소수부분 : 나머지를 기수로 곱하고 곱한 결과 정수부로 반올림이 발생되면 이 자리 올림을 순서대로 나열한다. (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.625 x 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. 160
보수 보수(Complements) 용도 : 뺄셈 연산 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-D D= 2389 에 대한 10의 보수 = 105-2389= 7611 D= 1101100 에 대한 2의 보수 = 0010011+1= 0010100 D : given number r : base n : digit number * r의 보수 (r-1)의 보수 +1 =(rn-1)-D+1= rn-D
보수를 이용한 뺄셈 부호가 없는 정수의 뺄셈 r의 보수를 이용한 방법, r-1의 보수를 이용한 방법 (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 X Y 1000011(X) - 1010100(Y) = -0010001 1000011 + 0101100 (1010100 의 2의 보수) 0 1101111 Result = -(1101111의 2의 보수) = -(0010000+1) = -0010001 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 13250(M) - 72532(N) = -59282 13250 + 27467 (72532 의 9의 보수) 0 40717 Result = -(40717의 9의 보수) = -(59282) = -59282 M N No End Carry Discard End Carry 1 X Y 1000011(X) - 1010100(Y) = -0010001 1000011 + 0101011 (1010100 의 1의 보수) 0 1101110 Result = -(1101110의 1의 보수) = -(0010001) = -0010001 X Y
수치 데이터 형식(numeric data) 문자 데이터 형식(character data) 데이터의 표현 수치 데이터 형식(numeric data) 문자 데이터 형식(character data) 데이터 표현 형식 수치 데이터 형식 고정 소수점 표현(Fixed-Point Representation) 레지스터에서 소수점의 위치 표현(2가지 방법) 레지스터의 가장 왼쪽에 있다고 가정(Fraction : 0.xxxxx) 레지스터의 가장 오른쪽에 있다고 가정(Integer : xxxxx.0) 고정 소수점 표현 방식 (1) Fixed Point (2) Floating Point ∵ 실제로 소수점은 레지스터 내부에 나타나지는 않으며 레지스터에 저장된 수를 정수로 취급할 것인가 혹은 소수로 취급할 것인가에 따라 소수점의 위치는 항상 고정되어 있다. Fig. 3-1 2 byte 4 byte
데이터의 표현 정수 표현 부호와 절대값(Signed-magnitude) 표현 부호 비트 0 : 양수 1 : 음수 정수 표현 부호와 절대값(Signed-magnitude) 표현 부호와 1의 보수(Signed-1’s complement) 표현 부호와 2의 보수(Signed-2’s complement) 표현 수의 범위 (n비트 레지스터) 부호와 절대값 부호와 1의 보수 부호와 2의 보수 : -0이 존재 않음 (대부분의 컴퓨터에서 사용) +14 -14 0 0001110 1 0001110 0 0001110 1 1110001 0 0001110 1 1110010 -(2n-1-1)∼(2n-1-1) -(2n-1-1)∼(2n-1-1) -(2n-1)∼(2n-1-1) 부호와 절대값 부호와 1의 보수 부호와 2의 보수 3 011 2 010 1 001 000 -0 100 111 - -1 101 110 -2 -3 -4
데이터의 표현 수치 데이터 형식 부동 소수점 표현(Floating-Point Representation) 지수 부분(exponent part) 가수 부분(mantissa part) 바이어스 값 (Bias=6410, or 4016) 지수 부분의 양수와 음수를 구분 지수값 + (6410 혹은 4016) 부호 127 양의 지수 가수부분의 유효자리수 바로 왼쪽에 소수점이 존재하는 것으로 가정하여 가수 부분의 값이 0.1에서 1사이에 있도록 정규화하여 표현 65 41 64 40 (100) (160) 63 3F 음의 지수 10진수 16진수
데이터의 표현 수치 데이터 표현의 예 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진법 형식 언팩 10진법 형식 양수(+) : C(1100), 음수(-) : D(1101), 부호 없는 양수 : F(1111) 언팩 10진법 형식 양수(+) : C(1100), 음수(-) : D(1101), 부호가 없는 양수 : F(1111)
데이터의 표현 문자 데이터 형식 이진 코드(binary code) 영문자, 소수점, 마침표 등의 특수 기호 포함 인코드(encode) : 어떤 숫자, 기호, 단어 등이 특별한 기호들로 표현하는 것 컴퓨터가 문자를 그대로 인식하고 처리하기 위해서는 0,1 의 조합으로 코드화 시킬 필요가 있음 문자코드 이진 코드(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
데이터의 표현 알파뉴메릭 코드 (alphanumeric code): 문자와 숫자를 동시에 표현할 수 있는 코드 Gray 코드 : 인접 코드간에 하나의 비트만이 변화, 비트의 위치가 특별한 가중치를 갖지 않음. A/D 변환기나 I/O 장치를 제어하는 코드로 사용. 3초과 코드 BCD 코드의 각 자리수에 3 (0011)2 을 더한 코드 자기 보수(self complement) 성질(10, 01로 바꾸면 쉽게 보수를 얻음) 십진수 7의 9의 보수는 2 3초과 코드 1010 0101 알파뉴메릭 코드 (alphanumeric code): 문자와 숫자를 동시에 표현할 수 있는 코드 ASCII 코드 (American Standard Code for Information Interchange) 7비트의 데이터 비트(128개의 서로 다른 정보 표현) 에 패리티 비트 1비트를 추가 26개의 대문자와 소문자, 10개의 숫자, 7개의 마크, +,*,#,/ 등의 특수문자와 SYN, ACK, NAK, EOT 등의 통신용 제어 문자를 지원 통신용 문자 코드로 사용 : 리턴과 개행 등의 화면과 프린터 제어용 문자를 지원 마이크로 컴퓨터의 입출력에 사용 EBCDIC 코드 확장형 BCD 코드 ASCII 코드보다 더 많은 문자를 지원하기 위해 데이터 비트 8비트 검사비트 1비트 등 9비트로 구성 대형 컴퓨터에서 많이 사용하는 코드 Table 3-8 참조
데이터의 표현 ~ 에러 검출 및 정정 코드 외부 환경(잡음)으로 인한 전송 중의 정보 변질 패리티 비트 (parity bit) : 메세지 비트 + 여분 비트(odd/even) 짝수(even) 패리티 전체 1의 개수(패리티 비트를 포함)가 짝수 개 가 되도록 패리티 비트를 추가 1 1 0 0 0 0 1 1 홀수(odd) 패리티 전체 1의 개수(패리티 비트를 포함)가 홀수 개 가 되도록 패리티 비트를 추가 1 1 0 0 0 0 0 1 Transmitter Receiver ~ Added parity bit 전송 중에 두 비트가 동시에 변한다면 에러 검출이 불가능 Added parity bit
데이터의 표현 2p ≥ m + p + 1 에러 검출 및 정정 코드 해밍 코드(Hamming code) 에러 정정 코드(error correction code) 한 비트의 에러를 검출하고 정정 정보 비트의 수 m, 패리티 비트의 수 p 예 : 8비트의 정보를 갖는 짝수 해밍 코드의 예 정보 비트 m = 8, 위의 식을 만족하는 p는 최소한 4비트가 됨 패리티 비트의 위치 선정, 2p 자리, 즉 1, 2, 4, 8 등에 대응하는 수의 자리에 위치 2p ≥ m + p + 1
데이터의 표현 P8 P4 P2 P1 P의 값 결정 해밍 코드를 이용한 오류 정정 6 조사하여 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의 개수가 짝수 해밍 코드를 이용한 오류 정정 1(0001), 3(0011), 5(0101), 7(0111), 9(1001), 11(1011), 13(1101) P8 P4 P2 P1 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 6