1 장디지털개념 한국기술교육대학교정보기술공학부전자전공장영조
1.1 디지털과아날로그 아날로그 : 연속적인범위의값으로표현 디지털 : 2 진수의값에의해표시 < 아날로그파형 > < 디지털파형 > 2
1.2 논리레벨과펄스파형 양논리시스템 (positive logic system)- 일반적으로많이사용 1(high 레벨 ), 0(low 레벨 ) 로나타냄. 음논리시스템 (negative logic system) 1(low 레벨 ), 0(high 레벨 ) 로나타냄. 논리레벨의물리적값 OUTPUT INPUT HIGH LOW 5.0 4.0 3.0 2.0 1.0 0.0 Volts HIGH LOW 3
논리레벨과펄스파형 ( 계속 ) 펄스 : high 상태와 low 상태를연속변환 주기 : 펄스파형이일정한구간에서파형이반복되는것 주파수 : 주기의반복률 < 양 (+) 펄스 > < 음 (-) 펄스 > < 주기펄스 > < 비주기펄스 > 4
논리연산 1.3 디지털논리 AND, OR, NOT, NAND, NOR, XOR, XNOR 디지털논리게이트 부울함수구현하는데사용. 5
디지털논리기능 비교기 (comparator) 두개의이진수값의크기비교 산술연산 가산기 (adder), 감산 (subtraction), 승산 (multiplier), 제산 (division) 인코딩 (encoder) 10진수나알파벳문자와같은정보를임의코드형태로변환 계수기 (counter) 이진수의값을계수 레지스터 (register) 이진수의일시적저장과정보이동에사용 6
2 장데이터의표현 한국기술교육대학교정보기술공학부전자전공장영조
컴퓨터에서는 2 진수사용 디지털하드웨어구현용이 메모리 ( 자리수 ) 용량 2 진수를사용하여각종정보표현 1.1 2 진수 수치값, 메모리주소, 명령코드, 컴퓨터제어비트, ASCII 코드, 10 진수 1000 1001 1010 1011 1100 1101 1110 1111 2 진수와다른진수의관계 8 0 1 2 3 4 5 6 7 10 진수 8 9 10 11 12 13 14 15 2 진수 0000 0001 0010 0011 0100 0101 0110 0111 2 진수 8 진수 00 01 02 03 04 05 06 07 8 진수 10 11 12 13 14 15 16 17 16 진수 0 1 2 3 4 5 6 7 16진수 9 A B C D E F 8
수체계와표현 양의기수 (radix), 위치표기법인수체계 기수 r의수는 r개의 digit를사용하여표현 A n A n-1 A 1 A 0. A -1 A -2 A -m+1 A -m in which 0 A i < r and. is the radix point. 각자리수는가중치 (weight) 를나타낸다. 각 digits 는맥급수합을표현 (Number) r = i = n j = - 1 i Ai r + i = 0 j = - m A ( 정수부분 ) + ( 소수부분 ) j r j 9
수체계 - 예 General Decimal Binary Radix (Base) r 10 2 Digits 0 ~ r - 1 0 ~ 9 0, 1 0 r 0 1 1 1 r 1 10 2 2 r 2 100 4 3 r 3 1000 8 Powers of 4 r 4 10,000 16 Radix 5 r 5 100,000 32-1 r -1 0.1 0.5-2 r -2 0.01 0.25-3 r -3 0.001 0.125-4 r -4 0.0001 0.0625-5 r -5 0.00001 0.03125 10
유용한 2 의맥급수표 2 의맥급수 Exponent Value Exponent Value 0 1 11 2,048 1 2 12 4,096 2 4 13 8,192 3 8 14 16,384 4 16 15 32,768 5 32 16 65,536 6 64 17 131,072 7 128 18 262,144 8 256 9 512 10 1024 19 524,288 20 1,048,576 21 2,097,152 11
10 진수변환 10 진수의 2 진수변환 2.2 수의진법변환 2진수 : 0, 1 10진수를 2의급수의합으로표현예 ) 47 = 32 + 8 + 4 + 2 + 1 = 1.2 5 + 0.2 4 + 1.2 3 + 1.2 2 + 1.2 1 + 1.2 0 = 101111 2 2 47 1 LSB 반복해서 2 의몫이 0 이될때까지나눈다. 첫번째나머지가최하위비트 (LSB) 이며, 마지막나머지가최상위비트 (MSB) 2 2 2 23 11 5 1 1 1 예 ) 47 10 = 101111 2 2 2 0 1 MSB 12
10 진수 -> 8 진수변환 8진수 : 0,1,2,.. 6,7 000 001 010 011 100 101 110 111 10진수를 8진수로변환방법 - 반복나누기 8로나눈결과에서나머지를사용한다. 계산결과에서나머지소수점을사용하여결정한다. 예 ) 266 10 을8진수변환 8 266 2 LSB 8 266 몫값 =33.25 나머지계산나머지 0.25 8 2 LSB 8 33 1 8 33 =4.125 0.125 8 1 4 MSB 4 MSB 13
10 진수 ->16 진수변환 16진수 : 0,1,2,.. 8,9,A,B,C,D,E,F 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 10 진수를 16 진수로변환방법 반복나누기 예 ) 388 10 을 16 진수변환 16 388 4 LSB 16 388 몫값 =24.25 나머지계산나머지 0.25 16 4 LSB 16 24 8 16 24 =1.5 0. 5 16 8 1 MSB 1 MSB 14
10 진수소수변환 10진수소수를 2진수로변환 소수에 2를곱하여정수가되는부분을기입 소수가 0이되거나원하는자리수까지반복 0. 예 ) 0.875를 2진수로변환하면 1 0.875 = 0.111 2 1 875 2 750 2 500 2 1 000 15
이진수의변환 2 진수를 10 진수로변환 예 ) 11101.11 2 를10진수로변환 101101.11 2 = 1 2 5 + 1 2 3 + 1 2 2 + 1 2 0 + 1 2-1 + 1 2-1 = 32 + 8 + 4 + 1+ 0.5 + 0.25 = (45.75) 10 2 진수를 8 진수로변환 3 자리보다작을때는앞에 0 을추가 예 ) 11101001100.11101을 8진수로변환소수점을기준으로위아래로각각 3자리씩끊어 8진수로변환 0 1 1 1 0 1 0 0 1 1 0 0. 1 1 1 0 1 0 3 5 1 4 7 2 11101001100.11101 2 = 3514.72 8 소수점아래 3 자리보다작을때는뒤에 0 을추가 16
2 진수의 16 진수변환 이진수의변환 소수점을기준으로상하 4자리씩끊어서각각 16진수변환예 ) 11010101110.110111을 16진수로변환 0110 1010 1110. 1101 1100 6 A E D C 11010101110.110111 2 = 6AE.DC 16 2 진소수를 10 진수로변환 예 ) 0.1011 2 를 10진수로변환 0.1011 2 = 1/2 + 1/8 + 1/16 = 0.5 + 0.125 + 0.0625 = 0.6875 10 17
8 진수변환 8 진수의 10 진수변환 예 ) 456.25 8 = 4 8 2 + 5 8 1 + 6 8 0 + 2 8-1 + 5 8-2 = 256 + 40 + 6 + 2/8 + 5/64 = 302.328125 10 8 진수를 2 진수로변환 예 ) 3567.12 8 를 2진수로변환하면.. 3 5 6 7. 1 2 011 101 110 111. 001 010 3567.12 8 = 011101110111.00101 2 18
16 진수변환 16 진수를 10 진수로변환예 ) 2F5C 16 = 2 16 3 + 15 16 2 + 5 16 1 + 12 16 0 = 8192 + 3840 + 80 + 12 = 12124 10 16 진수를 2 진수로변환예 ) 3F6A 16 를 2 진수로변환 3 F 6 A 0011 1111 0110 1010 3F6A 16 = 11111101101010 2 16 진수를 8 진수로변환 16 진수 2 진수변환 8 진수변환 A73.52 16 1010 0111 0011. 0101 0010 5 1 6 3. 2 4 2 A73.52 16 = 5163.242 8 19
2 진수덧셈연산 1 자리 2 진수덧셈 2.3 연산 2 진수 X,Y, 올림 (carry) Z : X + Y + Z 덧셈의결과합 S(sum) 와 carry Z Carry in Z=0 Z 0 0 0 0 X 0 0 1 1 + Y + 0 + 1 + 0 + 1 C S 0 0 0 1 0 1 1 0 Carry in Z=1 Z 1 1 1 1 X 0 0 1 1 + Y + 0 + 1 + 0 + 1 C S 0 1 1 0 1 0 1 1 20
여러자리 2 진수덧셈 한자리 2 진수덧셈을확장 - 캐리를윗자리로전달 Ci 입력캐리 X 피가수 Y 가수 S 합 Co 출력캐리 Overflow 01100 00110 + 10111 11101 00110 6 23 29 입력캐리첫자리 0 1110 1011 + 0111 10010 1111 가산합의결과가지정자리수를넘을때발생 미리충분한자리수를확보하여야한다. 11 7 18 X+Y+Ci 1100 + 0101 10001 12 5 17 0101001 +0110101 1011110 41 53 94 4 자리덧셈 6 자리덧셈, 결과 7 자리처음부터 7 자리덧셈 21
2 진수뺄셈 1자리 2진수덧셈 2진수 X-Y, 빌림 (borrow) Z : X-Y-Z 뺄셈의결과차이 D( difference) 와 B (borrow) Borrow in Z=0 Z 0 0 0 0 X 0 0 1 1 -Y -0-1 -0-1 BS 0 0 1 1 0 1 0 0 Z 1 1 1 1 Borrow in Z=1 X 0 0 1 1 -Y -0-1 -0-1 BS 11 1 0 0 0 1 1 22
여러자리 2 진수뺄셈 피감수 > 감수 : 피감수 - 감수 한자리 2진수뺄셈을확장-빌림을윗자리로전달 Bi 입력빌림 X 피감수 10010 10110 22 입력빌림첫자리 0 0110 111014 Y 감수 D 차이 Bo 출력빌림 - 01101 13 01001 9 01001-101111 0011 3 0011 피감수 < 감수 : 감수 - 피감수 뺄셈의결과에음의부호 (-) 를한다. X-Y-Bi 0110110 54-1001111 79 1001111-0110110 0011001 0110000 79 54-25 결과에음수부호를더함 23
8 진수덧셈 8 진수덧셈 / 뺄셈 가산의합이 8 이면자리올림 27 451 297 7046 + 13 + 376 254 + 274 42 1047 551 7342 8 진수뺄셈 빌림발생시 8 을내림 감수 > 피감수시 -( 감수 - 피감수 ) 376 254 451 297-451 297-376 254 551 053-43 011 결과에음수부호를더함 24
16 진수덧셈 16 진수덧셈 / 뺄셈 가산의합이 16 이면자리올림 1A + 97 B1 7FC + 648 E44 2044 1608 3652 7FC 16 = 7x16 2 +15x16 1 +12x16 0 = 1792 +240 +12=2044 10 16 진수뺄셈 빌림발생시 16을내림 감수 > 피감수시 -( 감수-피감수 ) 648 7FC 2044-7FC - 648 1608 1B4-436 000 결과에음수부호를더함 25
2 진수곱셈 곱셈연산 각자리수에곱셈표적용 0*0=0 1*0=0 0*1=0 1*1=1 자리수맞추어부분곱을더한다. 13 2 진변환 1101 5 2 진변환 101 65 2 진변환 1101 부 0000 분 1101 1000001 곱 26
연속적인 2 진수뺄셈 나눗셈연산 10 진수 2 진수 6 3 19 18 1 110 11 10011-0110 11-11 01 몫 나머지 27
음수표현법 플립플롭 : 2 진수저장, 각소자는한비트를표현 6 비트플립플롭 000000 111111 의 2 진수저장 음수표현 : 최상위비트 (MSB) 를부호비트로사용 1 음수 0 - 양수 부호있는수 (signed number) 의표현방법 부호 - 크기 (singed magnitude) 방식 1 의보수 (1's complement) 방식 2 의보수 (2's complement) 방식 부호 - 크기방식의표현 28
보수 보수의종류 : r 의보수, r-1 의보수 10진수 : 10의보수와 9의보수 2진수 : 2의보수와 1의보수 999 9의보수법 : 9에서각수를뺀다. 10진수의보수뺄셈 : 보수를사용하여덧셈으로연산 - 567 432 9의보수뺄셈 8 8-3 3에대한9의보수 +6 5 1 4 올림수 1을더함 +1 (EAC, End Around Carry) 5 10의보수 8 8 연산이더뺄셈 -3 3에대한10의보수 +7 단순하다 5 올림수 1은버림 1 5 29
2 진수의보수 1 의보수 각비트를 0 1 변환 1 0 1 0 1 1 원래의이진수 0 1 0 1 0 0 1 의보수 2 의보수 = 1 의보수 + 1 1 의보수를한후 LSB 에 1 을더한다 LSB 에서시작하여 0 이아닌첫번째 1 은그대로쓰고나머지위자리는모두반전 보수의보수 : 원래수 30
2 의보수를사용한음수 양수 : 부호비트 (MSB)=0, 크기는이진수의원래수 음수 : 부호비트 =1, 크기는 2 의보수로표현 2 의보수체계는디지털시스템에서부호화된수에많이사용됨덧셈과뺄셈을동일한회로를사용하여수행가능 -> 회로절약 < 예 > 부호비트를합하여총 5 비트를사용하여 2 의보수로표현 +13 01101-9 10111 ( 1001 --> 0111 ) -2 11110 ( 0010 --> 1110 ) 31
2 의보수를사용한음수 2 의보수표현의특별한수 부호비트가 1이고, 크기비트가모두 0일때, 그값은 -2 N N은크기비트의수 1000 = -2 3 = -8 10000 = -2 4 = -16 100000 = -2 5 = -32 크기비트 N 일때 2 의보수체계의표현범위 2 N ~ + (2 N -1) 0 을포함해서모두 2 N+1 개 < 예 > 1 바이트를사용하여표현된 signed 십진수의범위 10000000 2 = -2 7 = -128 10 01111111 2 = +2 7-1 = +127 10 총 256 개의값 (2 N 개, N=8) ** N 비트로표현한보수체계에서크기가 N 비트를다사용하지않을때 MSB 비트들의자리는부호비트와동일하게채운다 : sign bit 확장 1 바이트를사용한 +15 와 -15 의표현 +15 ==> 00001111-15 ==>1111 0001 32
1 의보수를사용한음수표현 양수 : 부호비트 (MSB)=0, 크기는이진수의원래수 음수 : 부호비트 = 1, 크기는 1 의보수로표현 +52 0110100-52 1001011 표현가능범위수 : 크기비트가 N 이라면, -2 N - 1 ~ + 2 N -1 : 2 N+1-1 개, -0 와 +0 로 0 의표현이두개 4 비트 1 의보수표현 4 비트 2 의보수표현 0000 +0 1000-7 0000 +0 1000-8 0001 +1 1001-6 0001 +1 1001-7 0010 +2 1010-5 0010 +2 1010-6 0011 +3 1011-4 0011 +3 1011-5 0100 +4 1100-3 0100 +4 1100-4 0101 +5 1101-2 0101 +5 1101-3 0110 +6 1110-1 0110 +6 1110-2 0111 +7 1111-0 0111 +7 1111-1 33
2 의보수체계의덧셈 부호비트와크기비트를동시에더함, 캐리발생시버림 34
피감수에서감수의뺄셈 2 의보수체계의뺄셈 1. 감수를 2의보수를취하여부호변환 : 감수 negation 2. 감수의 2의보수를피감수에더한다. 덧셈의결과는감수와피감수의차를나타낸다. 부호비트가 + 이면그대로, - 이면결과크기에 2의보수 3. 두수모두같은비트수를가져야한다. 35