데이터의 표현 (data Representation) Lecture #3
데이터의 종류 (1) Information that a Computer is dealing with Data Numeric Data - Numbers( Integer, real) Non-numeric Data - Letters, Symbols Relationship between data elements Data Structures - Linear Lists, Trees, Rings, etc Program(Instruction) 컴퓨터시스템구조
데이터의 종류 (2) 데이터의 이진코드화 데이터의 분류 모든 자료는 2진수로 변환되어 컴퓨터에서 처리 또는 저장됨 수치 데이터(Numeric Data) 산술연산에 사용하는 숫자(정수/실수) 비수치 데이터(Non-numeric data) 데이터 처리에 사용하는 문자(character) 특수목적에 사용하는 기호(symbol) 컴퓨터시스템구조
수의 체계 수의 체계(Number System) R-진수(Base (or radix) R number) 비자리 수 체계(Non-positional number system) Roman number system 자리 수 체계(Positional number system) Each digit position has a value called a weight associated with it Decimal, Octal, Hexadecimal, Binary R-진수(Base (or radix) R number) 각 자리 수에 R 개의 수(기호)를 사용하여 수를 표현 예: AR = an-1 an-2 ... a1 a0 .a-1…a-m V(AR) = Radix point(.) separates the integer portion and the fractional portion R = 10 Decimal number system, R = 2 Binary R = 8 Octal, R = 16 Hexadecimal 컴퓨터시스템구조
수의 표현 (1) 10진법(Decimal) 2진법(Binary) 8진법(Octal) 16진법(Hexadecimal) 0,1,…,9의 10진수로 수를 표시 (724.5)10 = 724.5 = 7×102+2×101+4×100+5×10-1 2진법(Binary) 0, 1의 2진수로 수를 표시 (101101)2 = 1×25+0×24+1×23+1×22+0×21+1×20 = (45)10 8진법(Octal) 0,1, …,7의 8진수로 수를 표시 (736.4)8 = 7×82+3×81+6×80+4×8-1 = (478.5)10 16진법(Hexadecimal) 0,1,…, 9,A,B,C,D,E,F의 16진수로 수를 표시 (F3)16 = 15×161+3×160 = (243)10 컴퓨터시스템구조
수의 표현 (2) 00 0000 00 0 Binary, octal, and hexadecimal conversion Decimal Binary Octal Hexadecimal 00 0000 00 0 01 0001 01 1 02 0010 02 2 03 0011 03 3 04 0100 04 4 05 0101 05 5 06 0110 06 6 07 0111 07 7 08 1000 10 8 09 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F Binary, octal, and hexadecimal conversion 1 2 7 5 4 3 Octal 1 0 1 0 1 1 1 1 0 1 1 0 0 0 1 1 Binary A F 6 3 Hexa 컴퓨터시스템구조
수의 표현 (3) – 진법 변환 R 진수에서 10진수로의 변환 10진수의 R 진수로의 변환 10진수를 정수(integer)와 분수(fraction) 부분으로 나누고 각 부분을 별도로 변환 정수 부분의 R-진수 변환 : R로 연속적으로 나누고 나머지를 누적하여 생성 분수 부분의 R-진수 변환: 연속적으로 R을 곱하여 정수 자리수를 누적하여 생성 A = an-1 an-2 an-3 … a0 . a-1 … a-m V(A) = ak Rk (736.4)8 = 7 x 82 + 3 x 81 + 6 x 80 + 4 x 8-1 = 7 x 64 + 3 x 8 + 6 x 1 + 4/8 = (478.5)10 (110110)2 = ... = (54)10 (110.111)2 = ... = (6.785)10 (F3)16 = ... = (243)10 (0.325)6 = ... = (0.578703703 .................)10 컴퓨터시스템구조
수의 표현 (4) – 진법 변환 예 Convert 41.687510 to base 2. Fraction = 0.6875 x 2 1.3750 0.7500 1.5000 x 2 1.0000 Integer = 41 41 20 1 10 0 5 0 2 1 1 0 0 1 (41)10 = (101001)2 (0.6875)10 = (0.1011)2 (41.6875)10 = (101001.1011)2 Exercise Convert (63)10 to base 5: (223)5 Convert (1863)10 to base 8: (3507)8 Convert (0.63671875)10 to hexadecimal: (0.A3)16 컴퓨터시스템구조
수의 표현 (5) - BCD 10진수의 표시 2진화 10진수 (BCD: Binary-Coded Decimal) 실세계에서는 10진수를 사용 10진수의 입력을 2진수로 바꾸어 산술연산을 수행한 다음에 연산결과를 10진수로 바꾸어 출력 경우에 따라서는 10진수를 2진화 10진수(BCD)의 형태로 직접 계산하는 것도 가능 2진화 10진수 (BCD: Binary-Coded Decimal) 4비트로 10진수 1자리를 표시 컴퓨터시스템구조
수의 표현 (6) – 영자숫자 표현 코드(Code) 표준코드 텍스트 데이터로 취급되는 문자, 기호도 코드화 10개의 숫자, 26개의 영어대문자, 특수기호 등의 32~64개를 문자로 표시하여 6비트가 필요 영어의 소문자까지 합쳐 7비트 필요 표준코드 ASCII(American National Standard Code for Information Interchange) 숫자일 경우 상위 3비트 011을 제외하면 BCD와 동일 ASCII코드가 단말기로부터 컴퓨터로 들어오면 BCD코드로 바뀐다 컴퓨터시스템구조
수의 표현 (7) – 영자숫자 표현 컴퓨터시스템구조
보수 (1) 보수(Complementary Number) R 진법에서의 보수 디지털 컴퓨터에서 뺄셈연산과 논리계산에 사용된다 두 종류의 보수가 존재 R의 보수 (R-1)의 보수 2진수에서는 1의 보수와 2의 보수 10진수에서는 9의 보수와 10의 보수 컴퓨터시스템구조
보수 (2) (R-1)의 보수 10진수의 9의 보수 2진수의 1의 보수 n-자리의 수 N에 대한 (R-1)의 보수 : (Rn-1)-N 10진수의 9의 보수 10진수에서 10n은 하나의 1과 뒤이은 n개의 0으로 구성되고 10n-1은 n개의 9로 구성 9의 보수는 각 자리의 숫자를 9에서 뺀 것과 동일 예 : 546700에 대한 9의 보수 = 999999-546700 = 453299 2진수의 1의 보수 n-자리 2진수 N에 대한 1의 보수: (2n-1)-N 2진수에서 2n은 1과 뒤이은 n개의 0으로 구성되어 있으며 2n-1은 n개의 1로 구성 2진수에 대한 1의 보수는 각 자리의 숫자를 1에서 뺀 것과 같다 예 : 1011001에 대한 1의 보수 = 1111111 – 1011001 = 0100110 컴퓨터시스템구조
보수 (3) R의 보수 n-자리의 수 N에 대한 R의 보수 : Rn-N (if N≠0) If N=0, N의 R의 보수 = 0 Rn-N=[(Rn-1)-N]+1이 성립 예 : 2389에 대한 10의 보수 = 7610+1= 7611 101100에 대한 2의 보수 = 010011+1= 010100 컴퓨터시스템구조
보수 (4) 소수점을 가진 숫자 N의 보수 소수점을 생략한 채로 각각 R 또는 (R-1)의 보수를 구한다 이 보수의 적합한 위치에 소수점을 다시 붙이면 된다 컴퓨터시스템구조
보수 (5) 부호없는 숫자의 뺄셈 R 진수의 부호없는 두 개의 n-자리 수의 뺄셈 M-N(N≠0)의 계산 디지털 하드웨어로 뺄셈을 할 때는 보수를 이용하는 것이 효율적 R 진수의 부호없는 두 개의 n-자리 수의 뺄셈 M-N(N≠0)의 계산 피감수 M에 감수 N에 대한 R의 보수를 더한다 M – N = M + (Rn - N) = M – N + Rn M≥N 보수의 합은 end 캐리 Rn을 만들어 내고 이것을 무시하면 결과는 M-N이 된다 M<N 보수의 합은 end 캐리를 만들지 않고 그 값은 Rn-(N-M)이다 이것은 (N-M)에 대한 R의 보수이므로 R의 보수를 취하고 그 앞에 뺄셈부호를 붙이면 결과를 얻을 수 있다 컴퓨터시스템구조
보수 (6) 예: 72532-13250=59282 M은 72532 N에 대한 10의 보수 + 86750 합은 159282 합은 159282 End 캐리 105을 무시 -100000 답은 = 59282 예: M<N인 경우 13250-72532 = -59282 M은 13250 N에 대한 10의 보수 + 86750 합은 = 40718 end 캐리가 없으므로 (-10의 보수) = -59282 컴퓨터시스템구조
보수 (7) 예: 2진수에 대한 뺄셈 X = 1010100 Y = 1000011 a) X-Y의 계산 b) Y-X의 계산 합은 10010001 합은 1101111 End캐리 27은 무시-10000000 X-Y = 0010001 컴퓨터시스템구조
컴퓨터 내부에서의 수의 표현 컴퓨터에서는 하드웨어적인 제약으로 부호를 포함한 모든 것을 0과 1로 표현 부호의 표현 숫자의 맨 왼쪽 비트를 부호비트로 정한다 0이면 부호를 양수, 1이면 부호를 음수로 표현 소수점의 표현 고정 위치의 소수점 2진 소수점이 항상 동일한 위치에 존재 분수(가수)를 표현하기 위해서 레지스터의 맨 왼쪽에 소수점을 두거나 정수를 표현하기 위해서 레지스터의 맨 오른쪽에 소수점을 둠 저장된 숫자를 분수 또는 정수로 취급 부동 위치의 소수점 첫번째 레지스터에 저장된 10진 소수점의 위치로 두번째 레지스터에 저장된 숫자를 표현 컴퓨터시스템구조
고정 소숫점 표현 (1) 정수의 표현 음수의 부호 절대값 표현 소수점이 레지스터(기억장소)의 오른쪽 끝에 있는 것으로 가정 양의 정수: 부호 0이고 양의 이진수로 표현 음의 정수: 부호 1이고 크기를 다음과 같은 방법으로 표현 부호절대값(signed-magnitude) 표현 부호화된 1의 보수(signed-1’s complement) 표현 부호화된 2의 보수(signed-2’s complement) 표현 음수의 부호 절대값 표현 음수는 음수의 부호와 그 크기를 나타내는 절대값으로 구성 (-14)를 8비트로 표현하면 (10001110) 컴퓨터시스템구조
고정 소숫점 표현 (2) 음수의 부호화된 1의 보수 표현 음수의 부호화된 2의 보수 표현 컴퓨터에서는 주로 음수를 보수로 표현 음수의 표현은 음수에 대한 2진수 값을 1의 보수로 표현 (-14)를 8비트로 표현하면 (11110001) 음수의 부호화된 2의 보수 표현 음수의 표현은 그 수에 대한 2진수의 값을 2의 보수로 표현 (-14)를 8비트로 표현하면 (11110010) 컴퓨터에서는 주로 음수를 보수로 표현 1의 보수 : 0에 대해 두가지 값(+0, -0)을 가짐으로 산술연산보다는 논리 연산에 적용 산술연산에는 2의 보수를 주로 사용 컴퓨터시스템구조
고정 소숫점 표현 (3) 산술가산 부호 절대값 표현에서 두수의 덧셈은 보통의 산술연산과 동일 두수의 부호가 동일하면 절대값을 더한 후 공통의 부호를 주고 두수의 부호가 다르면 절대값이 큰 수에서 작은 수를 빼고 큰 수의 부호를 붙인다 부호화된 2의 보수 표현에서는 비교와 뺄셈이 필요없고 덧셈과 보수화만으로 덧셈계산 먼저 부호를 포함하여 두수를 더한다 부호비트의 캐리는 무시 음수의 결과는 자동적으로 2의 보수형태로 만들어진다 컴퓨터시스템구조
고정 소숫점 표현 (4) 산술가산 예: +6 00000110 -6 11111010 +13 00001101 +13 00001101 +19 00010011 +7 00000111 +6 00000110 -6 11111010 -13 11110011 -13 11110011 -7 11111001 -19 11101101 컴퓨터시스템구조
고정 소숫점 표현 (5) 산술감산 음수가 2의 보수로 표현되어 있을 때 부호 비트를 포함한 감수의 2의 보수를 취한 다음 가산 부호비트까지 포함하여 가산 수식의 표현 (±A)-(-B) = (±A)+(+B) (±A)-(+B) = (±A)+(-B) 예: (-6)-(-13) = +7를 2진수 계산하면 11111010 - 11110011 = 100000111 00000111 (+7) 컴퓨터시스템구조
고정 소숫점 표현 (6) 오버플로(Overflow) n자리의 두 수를 가산해서 n+1자리의 합을 얻었을 때 오버플로가 발생하였다고 함 디지털 컴퓨터에서 레지스터를 포함한 모든 레지스터의 길이가 한정된 길이이기 때문에 오버플로가 발생할 수 있다 오버플로가 발생했을 경우 컴퓨터는 이를 검사하고 그에 대한 플래그(플립플롭)을 설정한다 컴퓨터시스템구조
고정 소숫점 표현 (7) 두 수의 덧셈 후의 오버플로(overflow) 검사 두 수의 부호화 여부에 따라 달라진다 부호가 없는 수의 덧셈의 경우에 최상위 비트에서 End 캐리가 발생하면 오버플로 판정 가능 부호가 있는 수의 덧셈의 경우에 부호비트도 숫자의 일부로 간주되어 end 캐리만으로는 오버플로 판정 불가능 한 수가 양이고 다른 한 수가 음일 때는 가산 후 오버플로 발생않음 두수가 모두 양이거나 음일 때는 오버플로 발생 가능 컴퓨터시스템구조
고정 소숫점 표현 (8) 예: 8비트 레지스터의 70과 80을 가산 레지스터의 최대용량은 (27-1)=127 레지스터의 최소용량은 (-27-1)=-128 두 수의 합은 150이므로 레지스터 용량 초과 마지막 두 개의 캐리를 찾아서 (XOR)하여 오버플로 검사 Carries 0 1 Carries 1 0 +70 01000110 -70 10111010 +80 01010000 -80 10110000 +150 10010110 -150 01101010 마지막 2개의 캐리를 (XOR)하여 0이면 오버플로 발생하지 않은 경우이고 그 결과가 1이면 오버플로 발생한 경우로 판정 컴퓨터시스템구조
고정 소숫점 표현 (9) 십진 고정소수점의 표현 레지스터에 저장된 10진수를 표현하는 것은 십진 숫자를 나타내는 데 사용된 2진 코드방식에 따라 다르다 BCD로 표현된 4385 각 숫자마다 4개의 플립플롭이 사용되기 때문에 모두 16개의 플립플롭이 필요 2진 코드로 표현하면 0100 0011 1000 0101 BCD의 부호화된 10진수의 표현 2진수에서의 부호표현과 비슷 부호화 절대값 표현 부호화된 보수 표현 부호에 있어서 양수는 0, 음수는 9로 표현 컴퓨터시스템구조
고정 소숫점 표현 (10) 십진 고정소수점의 표현 덧셈 뺄셈 부호, 숫자를 포함한 모든 숫자를 더하고 End 캐리를 무시 예: (+375)+(-240) = +135 0 375 (0000 0011 0111 0101) +9 760 (1001 0111 0110 0000) 0 135 (0000 0001 0011 0101) 두 번째 맨 왼쪽의 9는 음수표현이고 9760은 0240에 대한 10의 보수 덧셈은 BCD 가산기에서 수행된다 뺄셈 2진수에서와 같은 방법으로 감수에 대해 10의 보수를 취하고 이것을 피감수에 더하여 결과를 얻음 컴퓨터시스템구조
부동 소숫점 표현 (1) 숫자의 부동 소수점 표현 부동소수점의 표현 형식 두 부분으로 구성 : 가수(mantissa) & 지수(exponent) 가수 : 부호화된 고정소수점 숫자, 분수나 정수 모두 가능 지수 : 10진 또는 2진 소수점의 위치를 알려주는 부분 예) +6132.789를 부동소수점으로 표현 Fraction Exponent +0.6132789 +04 부동소수점의 표현 형식 m×re m:가수 e:지수 r:밑수 레지스터에는 가수와 지수만이 그 부호를 포함해서 저장 밑수와 가수의 소수점은 이미 가정되어 있는 것으로 간주 컴퓨터시스템구조
부동 소숫점 표현 (2) 2진수의 부동소수점 표현 형식 밑수가 2 예: +1001.11을 8비트의 분수와 6비트의 지수로 표현 Fraction Exponent 01001110 000100 분수의 맨 왼쪽 0은 양수임을 표시 분수의 소수점은 부호비트 바로 다음에 표시 지수부는 +4 m×2e = +(.1001110)2 ×2+4 컴퓨터시스템구조
부동 소숫점 표현 (3) 정규화(Normalization) 부동 소수점 숫자의 산술연산 가수의 최상위 비트가 0이 아닌 경우 정규화의 여부는 가수에서의 소수점의 위치와는 관계없이 최상위 비트값에 의해서만 결정 예: 8비트의 00011010은 정규화되지 않았다. 이것을 정규화하기 위해서 왼쪽으로 3번 시프트한다 11010000×2-3 부동 소수점 숫자의 산술연산 연산이 복잡하고 시간이 많이 걸린다 하드웨어적으로 복잡하다 매우 큰 수와 매우 작은 수를 표현하기에 편리 컴퓨터시스템구조
데이터의 내부 표현 & 외부 표현 Another Computer External Internal Representation CPU Memory Internal Representation Human Device Another Computer External 컴퓨터시스템구조
데이터의 외부 표현 (1) Numbers Most of numbers stored in the computer are eventually changed by some kinds of calculations → Internal Representation for calculation efficiency → Final results need to be converted to as External Representation for presentability Alphabets, Symbols, and some Numbers Elements of these information do not change in the course of processing → No needs for Internal Representation since they are not used for calculations → External Representation for processing and presentability Example Decimal Number: 4-bit Binary Code BCD(Binary Coded Decimal) Decimal BCD Code 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 컴퓨터시스템구조
데이터의 외부 표현 (2) 기타 10진 코드 10진수 한 단위를 위해 최소 4비트가 필요하다 컴퓨터시스템구조
데이터의 외부 표현 (3) Gray Code Gray Binary 한 숫자에서 다음 숫자로 올라갈 때 한 비트만이 변하는 특성을 갖는다 주로 제어계통에 사용 Gray Binary g3 g2 g1 g0 b3 b2 b1 b0 Decimal number 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 2 0 0 1 1 0 0 1 0 3 0 0 1 0 0 0 1 1 4 0 1 1 0 0 1 0 0 5 0 1 1 1 0 1 0 1 6 0 1 0 1 0 1 1 0 7 0 1 0 0 0 1 1 1 8 1 1 0 0 1 0 0 0 9 1 1 0 1 1 0 0 1 10 1 1 1 1 1 0 1 0 11 1 1 1 0 1 0 1 1 12 1 0 1 0 1 1 0 0 13 1 0 1 1 1 1 0 1 14 1 0 0 1 1 1 1 0 15 1 0 0 0 1 1 1 1 4-bit Gray codes 컴퓨터시스템구조
데이터의 외부 표현 (4) – 그레이 코드 분석 Letting gngn-1 ... g1 g0 be the (n+1)-bit Gray code for the binary number bnbn-1 ... b1b0 gi = bi bi+1 , 0 i n-1 gn = bn and bn-i = gn gn-1 . . . gn-i bn = gn Reflection of Gray codes 0 0 0 0 00 0 000 1 0 1 0 01 0 001 1 1 0 11 0 011 1 0 0 10 0 010 1 10 0 110 1 11 0 111 1 01 0 101 1 00 0 100 1 100 1 101 1 111 1 110 1 010 1 011 1 001 1 000 Note: The Gray code has a reflection property - easy to construct a table without calculation, - for any n: reflect case n-1 about a mirror at its bottom and prefix 0 and 1 to top and bottom halves, respectively
데이터의 외부 표현 (5) 기타 영자숫자 코드 아스키(ASCII) 코드 2진 정보를 전송하기 위해 공통적으로 사용되는 표준 코드 각 문자는 7비트로 표시 8번째 비트로는 패리티(Parity)비트 128개의 문자를 포함 EBCDIC(Extended BCD Interchange Code)코드 IBM장비에 사용 각 문자는 8비트로 표시 9번째 비트는 패리티 비트 컴퓨터시스템구조
데이터의 외부 표현 (6) ASCII (American Standard Code for Information Interchange) Code MSB (3 bits) 0 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 9 A B C D E F NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US SP ! “ # $ % & ‘ ( ) * + , - . / 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] m n ‘ a b c d e f g h I j k l m n o P q r s t u v w x y z { | } ~ DEL LSB (4 bits)
데이터의 외부 표현 (7) NUL Null DC1 Device Control 1 SOH Start of Heading (CC) STX Start of Text (CC) ETX End of Text (CC) EOT End of Transmission (CC) ENQ Enquiry (CC) ACK Acknowledge (CC) BEL Bell BS Backspace (FE) HT Horizontal Tab. (FE) LF Line Feed (FE) VT Vertical Tab. (FE) FF Form Feed (FE) CR Carriage Return (FE) SO Shift Out SI Shift In DLE Data Link Escape (CC) DC1 Device Control 1 DC2 Device Control 2 DC3 Device Control 3 DC4 Device Control 4 NAK Negative Acknowledge (CC) SYN Synchronous Idle (CC) ETB End of Transmission Block (CC) CAN Cancel EM End of Medium SUB Substitute ESC Escape FS File Separator (IS) GS Group Separator (IS) RS Record Separator (IS) US Unit Separator (IS) DEL Delete (CC) Communication Control (FE) Format Effector (IS) Information Separator
에러 검출 코드 (1) 2진 정보를 전송할 때 외부잡음이 들어가면 1이 0으로, 0이 1로 변하여 에러가 생길 가능성이 있다 일반적으로 에러 검출방법은 패리티 비트를 사용 Even Parity and Odd Parity Even Parity One bit is attached to the information so that the total number of 1 bits is an even number 1011001 0 1010010 1 Odd Parity One bit is attached to the information so that the total number of 1 bits is an odd number 1011001 1 1010010 0 컴퓨터시스템구조
에러 검출 코드 (2) 패리티 생성 Parity Bit Generation For b6b5... b0(7-bit information); even parity bit beven beven = b6 b5 ... b0 For odd parity bit bodd = beven 1 = beven 컴퓨터시스템구조
에러 검출 코드 (3) 패리티 생성기 및 검사기 beven Even Parity error indicator Parity Generator Circuit (even parity) b6 b5 b4 b3 b2 b1 b0 beven Parity Checker beven b6 b5 b4 b3 b2 b1 b0 Even Parity error indicator 컴퓨터시스템구조
에러 검출 코드 (4) 패리티 비트의 생성과 검사기를 위한 진리표 컴퓨터시스템구조