Download presentation
Presentation is loading. Please wait.
Published byKäthe Breiner Modified 5년 전
1
3장. 데이터의 표현과 컴퓨터 연산 다루는 내용 진법과 진법 변환 연산과 보수 데이터의 표현 산술 연산 논리 연산
2
Section 01 개념으로 살펴본 CPU속의 산술 논리 연산장치 살펴보기
산술논리연산장치 (Arithmetic & Logic Unit : ALU) 산술 및 논리 연산을 수행 레지스터 제어 장치 [그림 3-1] CPU의 내부 구성
3
ALU의 내부 구성 요소 산술 연산장치 논리 연산장치 쉬프트 레지스터 보수기(complementer)
+, -, ×, ÷등을 수행 논리 연산장치 AND, OR, XOR, NOT 등을 수행 쉬프트 레지스터 shift register 비트들을 좌우측으로 이동 보수기(complementer) 2진 데이터를 2의 보수로 변환 음수를 만드는 역할 상태 레지스터(status register) 연산 결과의 상태를 나타내는 플래그(flag)들을 저장 [그림 3-2] ALU의 구성 장치
4
Section 02 진법과 진법 변환 진 법 십진수의 개념 이진수의 개념 0 ~ 9의 10가지의 기호를 이용하여 수를 표현
십진수 (724)10의 분석 : 10의 승수(10N)로 표현 10진수의 표시: (724)10 = 7×102+2×101+4×100 이진수의 개념 0과 1만을 가지고 수를 표현 십진수의 관계는 2의 승수(2N)로 표현 (101101)2 = 1×25+0×24+1×23+1×22+0×21+1×20 = (45)10
5
진법 변환 십진수를 이진수로의 변환 이진수를 십진수로의 변환
연속적으로 2로 나눗셈을 수행하면서 얻어지는 나머지에 의해서 만들어진다. (41)10의 이진수로 변환 41을 2로 연속해서 나눗셈 생성된 나머지를 정렬 (41)10 = (101001)2 이진수를 십진수로의 변환 이진수를 2N로 표현 (101001)2 = 1×25+0×24+1×23+0×22+0×21+1×20 = = (41)10
6
보수(Complementary Number)
Section 03 연산과 보수 이진수의 음수 표현 방법으로 보수가 대표적 보수(Complementary Number) r진법에서 두 종류의 보수가 존재 r의 보수와 (r-1)의 보수 이진수에서는 1의 보수와 2의 보수가 존재
7
(r-1)의 보수 n자리수의 수 N에 대한 (r-1)의 보수 이진수에서 1의 보수 (1011001)2에 대한 1의 보수
N에 대한 1의 보수는 (2n-1)-N 2n은 1과 뒤이은 n개의 0으로 구성 2n-1은 n개의 1로 구성 1의 보수는 각 자리의 숫자를 각각의 1에서 뺀 것 ( )2에 대한 1의 보수 ⇒ r=2, n=7자리수의 수 N= 에 대한 1의 보수 27= , 27-1= (rn - 1) – N = (27 - 1) – = =
8
r진법에서 n자리수의 N (N≠0)에 대한 r의 보수
r의 보수가 rn-N=[(rn-1)-N]+1으로부터 정의되므로 r의 보수는 (r-1)의 보수에 1을 더하면 된다. (101100)2에 대한 2의 보수 ⇒ 이진수에 대한 1의 보수: – = 이진수에 대한 2의 보수: =
9
이진수로 수를 표현하기 위해서는 0, 1, 부호 및 소수점을 이용 -13.62510 = -1101.1012
Section 04 데이터의 표현 이진수로 수를 표현하기 위해서는 0, 1, 부호 및 소수점을 이용 = 정수 표현 (Integer Representation) n비트의 2진수를 부호 없는 십진정수 A로 변환 A = an-1 × 2n-1 + an-2 × 2n a1 × 21 + a0 × 20 부호 없는 십진정수 A를 이진수로 변환하는 방법 연속적인 2의 나눗셈을 수행하면서 생성되는 나머지를 이용한다.
10
소수의 표현 소수점 이하의 십진수값을 이진수로의 표현 (13.625)10를 이진수로 변환 정수부분의 변환은 기존과 동일
소수점 이하의 십진수는 연속적으로 2곱셈 (13.625)10를 이진수로 변환 1 단계: 13을 이진수로 변환 (13)10 = (1101)2 2 단계: 0.625의 이진수 변환 (0.625)10 = (0.101)2 3 단계 : (13.625)10 = (1101)2 + (0.101)2 = ( )2
11
유니버셜 게이트 (Universal Gate)
소수점을 포함하고 있는 이진수를 십진수로 변환하는 방법 정수부분은 기존의 방법과 같이 2의 승수를 이용 소수점 이하는 2의 (-)승수를 사용 A = an-1 × an-2 × a1 × 2-(n-1) + a0 × 2-n ( )2의 십진수로 변환 ( )2 = 1×23 + 1×22 + 0×21 + 1×20 + 1× × ×2-3 = = (13.625)10 23 22 21 20 . 2-1 2-2 2-3 1
12
음수의 표현 음수를 표현하기 위해서는 부호 비트를 할당 적절하게 크기 값을 표현
부호화-크기 표현(signed-magnitude representation) 1의 보수 표현(1's complement representation) 2의 보수 표현(2's complement representation)
13
보수를 이용한 음수의 표현 디지털 장치에서 1의 보수를 구하는 방법 2의 보수 1의 보수에 1을 더한 것
모든 비트들을 0 → 1, 1 → 0으로 반전 2의 보수 1의 보수에 1을 더한 것 1의 보수: → (반전) 2의 보수: 1의 보수(1's complement) 표현 모든 비트들을 반전 (0 → 1, 1 → 0) 2의 보수(2's complement) 표현 모든 비트들을 반전하고, 결과값에 1을 더한다 + 1
14
A = - 2n-1 + (an-2×2n-2+ an-3×2n-3+… a1×21+ a0×20 )
2의 보수를 사용한 음수의 표현 2의 보수로 표현된 양수(최상위 비트: an-1 = 0)의 십진수 변환 A = an-2 × 2n-2 + an-3 × 2n a1 ×21 + a0 ×20 2의 보수로 표현된 음수(최상위 비트: an-1 = 1)의 십진수 변환 A = - 2n-1 + (an-2×2n-2+ an-3×2n-3+… a1×21+ a0×20 ) 2의 보수로 표현된 음수의 변환의 예 = (1 × × × × 21) = ( ) = - 82
15
2의 보수로 표현된 n비트 데이터의 표현 할 수 있는 수의 범위 -2n-1 ≤ N ≤ 2n-1-1
수의 표현 범위 2의 보수로 표현된 n비트 데이터의 표현 할 수 있는 수의 범위 -2n-1 ≤ N ≤ 2n-1-1 비트에 따른 수의 범위와 최대값과 최소값의 표현 8비트 2의 보수: -128 ≤ N ≤ +127 27–1 = = +127 -27 = = -128 16비트 2의 보수: ≤ N ≤ 215-1 = = -215 = =
16
부동소수점 표현 (Floating-Point Representation)
고정소수점(fixed-point)표현 방식 = = 매우 큰 수 및 매우 작은 수의 표현이 불가능 부동소수점(floating-point)의 표현 과학적 표기의 지수(exponent)를 사용하여 소수점의 위치를 이동시킬 수 있는 표현 방법 표현의 범위가 확대 십진수에 대한 부동소수점 표현 예 176,000 = 1.76 × ,000 = 17.6 × 104 = 1.76 × = 17.6 × 10-5
17
부동소수점 수(floating-point number)의 표현법 ± M × B± E
부동소수점 표현 부동소수점 수(floating-point number)의 표현법 ± M × B± E ±는 부호로서 + 혹은 –을 나타낸다. M은 가수(significand), B는 기수(base), E는 지수(exponent) 2진 부동소수점 수(binary floating-point number) 가수 M은 0과 1로 구성, 기수 B는 2 × 23 비트 수에 따른 분류 단일-정밀도(single-precision) 부동소수점 수 : 32비트 복수-정밀도(double-precision) 부동소수점 수 : 64 비트
18
부동소수점 표현 단일-정밀도 부동소수점 수 형식 필드에 비트할당 문제
부호 필드(S) 1비트, 지수필드(E) 8비트, 가수필드(M) 23비트 필드에 비트할당 문제 표현하는 수의 범위와 정밀도를 결정 지수(E) 필드의 비트 수가 늘어나면, 소수점을 이동시키는 범위가 커져서 표현 가능한 수의 범위가 확장 가수(M) 필드의 비트 수가 늘어나면, 이진수로 표현할 수 있는 수가 많아져서 정밀도(precision)가 증가 31 S필드 지수(E) 필드 가수(M) 필드
19
정규화된 표현(normalized representation)
부동소수점의 수를 통일되게 표현하는 방법 ± 0.1bbb...b × 2E 정규화된 표현의 단일 정밀도 부동소수점의 수 배열 × 25 부호(S) 비트 = 0 지수(E) = 가수(M) = S필드 지수(E) 필드 가수(M) 필드
20
Section 05 산술 연산 정수의 산술 음수화(2의 보수 변환) ; A = A'+ 1 (A ': 1의 보수)
덧셈 ; C = A + B 뺄셈 ; C = A - B 곱셈 ; C = A× B 나눗셈 ; C = A / B
21
음수화(negation) 2의 보수를 사용 +19 : 00010011 1의 보수 : 11101100 + 1 -19 :
-19를 2의 보수로 만드는 예 +19 : 1의 보수 : -19 :
22
덧셈 양수와 양수의 덧셈 음수와 양수의 덧셈 음수와 양수의 덧셈 음수와 음수의 덧셈 (+2) + (+3) = (+5)
자리 올림수가 발생하지 않음 (-6) + (+3) = (-3) 음수와 양수의 덧셈 자리 올림수가 발생 (-3) + (+5) = (+2) 음수와 음수의 덧셈 (-2) + (-4) = (-6) 0010 + 0011 0101 1101 + 0101 1 버림 0010 1010 + 0011 1101 1110 + 1100 1 버림 1010
23
A - (+B) = A + (-B) A - (-B) = A + (+B)
뺄셈 빼는 수를 보수화하여 결과적으로 덧셈을 이용 A - (+B) = A + (-B) A - (-B) = A + (+B) 자리 올림수가 발생하지 않는 경우 (+2)–(+5)=(+2)+(-5)=(-3) 자리 올림수가 발생하는 경우 (+5)–(+2)=(+5)+(-2)=(+3) 0010 + 1011 1101 = -3 0101 + 1110 1 버림 0011 = +3
24
곱하는 수(B)를 승수(multiplier)라고 하며, 곱하여 지는 수(A)를 피승수(multiplicand)
곱셈 곱하는 수(B)를 승수(multiplier)라고 하며, 곱하여 지는 수(A)를 피승수(multiplicand) A × B = C 부호가 없는 경우의 곱셈의 예 4비트의 두 수가 서로 곱셈을 수행하면, 2배인 8비트의 길이의 결과를 출력 × 1 피승수(13) 승수(11) 부분합 (partial product) 곱의 결과(143)
25
나눗셈 나누어지는 수 D를 피제수(dividend), 나누는 수 V를 제수(divisor), 나눗셈의 결과 몫(quotient) Q와, 나머지 수(remainder) R D ÷ V = Q … R ← 몫 제수 → 1011 ← 피제수 부분나머지 → 001110 001111 100 ← 나머지
26
부동소수점 수의 산술) 가수와 지수의 연산을 분리해서 수행 덧셈과 뺄셈의 경우는 지수를 같은 값으로 조정한 후, 가수들에 대하여 덧셈과 뺄셈을 수행 곱셈과 나눗셈의 경우에서는 가수끼리는 곱셈과 나눗셈을 수행하고, 지수의 연산에서는 곱셈의 경우는 덧셈을 수행하고 나눗셈의 경우에는 뺄셈을 한다
27
부동소수점 수의 덧셈과 뺄셈 지수들이 동일한 값을 같도록 일치 가수들 간의 덧셈과 혹은 뺄셈을 수행
이진수의 경우 결과를 정규화 (normalization) 십진수의 부동소수점의 수의 덧셈과 뺄셈 A = 0.3 × 102, B = 0.2 × 103 덧셈 연산 A + B = 0. 3 × × 103 = 0.3 × × 102 = 2.3 × 102 뺄셈 연산 A - B = 0. 3 × × 103 = 0.3 × × 102 = × 102 이진수의 부동소수점 수의 덧셈 지수조정 × 22 ⇒ × 23 × 23 × 23 정규화 × 23 × 24
28
부동소수점 수의 곱셈과 나눗셈 부동소수점 수의 곱셈 십진 부동소수점 수의 곱셈 예 이진 부동소수점 수의 곱셈 예
가수끼리는 곱셈 연산을 수행하고 지수끼리는 덧셈을 수행 십진 부동소수점 수의 곱셈 예 A = 0.3 × 102, B = 0.2 × 103 A × B = (0. 3 × 102) × (0.2 × 103) = (0.3 × 0.2) × = 0.06× 105 이진 부동소수점 수의 곱셈 예 ( × 23) × ( × 25) 가수 곱하기: 1011 × 1001 = 지수 더하기: = 8 정규화: × 28 = × 27
29
부동소수점 수의 곱셈과 나눗셈 부동소수점 수의 나눗셈 십진수의 부동소수점 수의 나눗셈
가수부분은 나눗셈 연산을 수행하고, 지수부분은 뺄셈 연산 수행 십진수의 부동소수점 수의 나눗셈 A ÷ B = 0. 3 × 102 ÷ 0.2 × = (0.3 ÷ 0.2) × = 1.5× 10-1 이진수 부동소수점 수의 나눗셈 ( × 25) ÷ ( × 23) 가수 나누기: 1100 ÷ 1100 = 1 지수 뺄셈: = 2 정규화: 0.1 × 22
30
Section 06 논리 연산 마스크(mask) 연산 원하는 비트들을 선택적으로 clear하는 데 사용하는 연산
A 레지스터의 상위 4비트를 0으로 clear하는 경우의 예 A = (연산 전) B = 마스크 (AND)연산 A = (연산 후)
31
컴퓨터 응용 논리 연산 비교(compare) 연산
두 데이터를 비교하는 연산으로 대응되는 비트들의 값이 같으면, 해당 비트를 0으로 세트하고 서로 다르면, 해당 비트를 1 세트 모든 비트들이 같은 경우, Z 플래그(zero 플래그)를 1로 세트 A = (연산 전) B = 비교(XOR)연산 A = (연산 후)
32
산술적 쉬프트(arithmetic shift)
컴퓨터 응용 논리 연산 산술적 쉬프트(arithmetic shift) 쉬프트 과정에서 부호 비트는 유지하고, 수의 크기를 나타내는 비트들만 쉬프트한다. 산술적 좌측-쉬프트 D4 (불변), D3 ← D2, D2 ← D1, D1 ← 0 산술적 우측-쉬프트 D4 (불변), D4 → D3 , D3 → D2, D2 → D1 다음은 산술적 쉬프트의 예이다. A = ; 초기 상태 ; A의 산술적 좌측-쉬프트 결과 ; A의 산술적 우측-쉬프트 결과
Similar presentations