논리회로 설계 제2장 2진수 체계와 디지털 코드들 2.1 2진수 표현  비트(bit)  2진 숫자(binary digit)의 약어  디지털 시스템에서 수(number) 혹은 문자(character)와 같은 정보를 표현하는.

Download Report

Transcript 논리회로 설계 제2장 2진수 체계와 디지털 코드들 2.1 2진수 표현  비트(bit)  2진 숫자(binary digit)의 약어  디지털 시스템에서 수(number) 혹은 문자(character)와 같은 정보를 표현하는.

논리회로 설계
제2장
2진수 체계와 디지털 코드들
2.1 2진수 표현
 비트(bit)
 2진 숫자(binary digit)의 약어
 디지털 시스템에서 수(number) 혹은 문자(character)와
같은 정보를 표현하는 기본 단위
 ‘0’ 혹은 ‘1’의 값을 가짐
 비트 수에 따라 표현 가능한 범위가 결정됨
 비트 수(n)가 많아질수록, 표현 범위 증가 : 0 ~ (2n-1)
[예] n = 3  0 ~ 7 (23 –1)
n = 5  0 ~ 31 (25 –1)
n = 8  0 ~ 255 (28 –1)
2진수 표현 (계속)

2진수와 10진수의 관계 및 단위의 명칭
2진수 표현 (계속)
 10진수  2진수 변환
 반복 2분법(repeated division-by-2 method) 이용
① 10진수를 2로 나누고, 나머지 값을 기록한다
② 몫이 0이 될 때까지 ①번 동작을 계속한다
③ 가장 나중에 발생한 나머지 값부터 시작하여 이전
의 나머지 값들을 순서대로 나열하여 2진수 비트
배열(bn-1bn-2...b1b0)을 구한다
2진수 표현 (계속)
MSB
LSB
2진수 표현 (계속)
 2진수  10진수 변환
 N = bn-1 bn-2 …. b1 b0
= bn-1 × 2n-1 + bn-2 × 2n-2 + … b1 × 21 + b0 × 20
 MSB : bn-1 , LSB : b0
[예] 1101012  5310
2진수 표현 (계속)
 소수점 이하의 10진수를 2진수로 변환하는 절차
(1보다 작은 10진수를 2진수로 변환하는 방법)
① 10진수에 2를 곱한다.
② 결과값이 1보다 작으면 ‘0’을 기록하고, 1보다 크면
‘1’을 기록한 다음에, 1을 뺀다.
③ ②번의 결과값이 0 이 될 때까지 위의 과정을 반복
한다.
2진수 표현 (계속)
2진수 표현 (계속)
 MSB인 bn-1 의 좌측에 2진 소수점이 있는 소수(fraction)인
A = bn-1 bn-2 …. b1 b0 를 10진수로 변환하는 방법
A = bn-1 × 2-1 + bn-2 × 2-2 + … b1 × 2-(n-1) + b0 × 2-n
[예] 0.10112의 10진수 변환
0.1011 = 1 × 2-1 + 0 × 2-2 + 1 × 2-3 + 1 × 2-4
= 0.5 + 0.125 + 0.0625
= 0.687510
2진수 표현 (계속)
 오차(error)의 발생
 원인: 10진수를 2진수로 변환하는 과정에서 제한된
개수의 비트로만 표현하기 때문
[예] 0.610를 8-비트 2진수로 변환  0.100110012
2진수 표현 (계속)
 8-비트 변환 결과 : 0.10011001
 오차(ε) 계산
• 오차(ε) = 0.6 – 0.59765625 = 0.00234375
 16-비트 변환 결과: 0.1001100110011001
• 오차(ε)  감소
2진수 표현 (계속)
 정수와 소수가 합해진 10진수의 2진수 변환 : 정수와 소수
부분을 각각 2진수로 변환한 다음에, 통합한다
2진수 표현 (계속)
[예제 2-4] (계속)
2진수 표현 (계속)
 소수점이 포함된 2진수의 10진수 변환 : 2진 소수점을 기
준으로, 좌측으로는 양의 멱수(power), 우측으로는 음의
멱수를 적용하여 변환
2진수 표현 (계속)
 단어(word) : 디지털시스템에서 데이터의 입력, 처리, 저
장 및 출력을 수행하는 기본 단위
 단어 길이의 예: 8 비트, 16 비트, 32 비트, 64 비트
2.2 8진수 및 16진수 표현
8진수 : 0 ~ 7 까지의 숫자를 이용하여 수를 표현
16진수 : 0 ~ 9, A ~ F 까지의 숫자 및 문자들을
이용하여 수를 표현
8진수 및 16진수 표현 (계속)
 10진수를 8진수로 변환하는 방법 : 반복 8분법(10진수를
8로 반복하여 나눈 다음에, 나머지 수들을 나열) 이용
[예] 85410  15268
8진수 및 16진수 표현 (계속)

2진수  8진수 변환 : 세 비트씩 분할하여 변환하는
비트 분할 방법(bit partition method) 이용
[예]
( 10 110 101 001 100 . 111 010 000 100 )2 =
2 6
=
5
1
4 .
7
( 2 6 5 1 4 . 7 2 0 4 )8
2
0
4
8진수 및 16진수 표현 (계속)

8진수  2진수 변환 : 각 8진 숫자에 대하여 3-비트
단위로 변환
[예]
( 5214.637 )8 = ( 101 010 001 100 . 110 011 111 )2
5 2
1 4 . 6
3 7
8진수 및 16진수 표현 (계속)

2진수  16진수 변환 : 2진 소수점을 중심으로, 좌측 및
우측 방향으로 네 비트씩 분할하여 변환
[예]
( 11 1010 0110 1101 . 1011 0010 )2 = ( 3A6D.B2 )16
3 A
6
D
B
2
8진수 및 16진수 표현 (계속)

16진수  2진수 변환 : 각 16진 숫자에 대하여 4-비트
단위로 변환
[예]
( 5B2.1E )16 = ( 0101 1011 0010 . 0001 1110 )2
5
B
2 . 1
E
2.3 2진 산술 연산
2.3.1 2진 덧셈(binary addition)
 2진 변수 x 와 y를 더하여, 합(sum)과 올림수(carry)
를 발생
 덧셈 규칙
2진 덧셈의 예
2.3.2 2진 뺄셈(binary subtraction)
 2진 변수 x 와 y 간에 뺄셈(x - y)을 수행하여, 차이
(difference)와 빌림수(borrow)를 발생
 x < y 일 때, 빌림수 발생
 뺄셈 규칙
2진 뺄셈 (계속)
2.3.3 2진 곱셈
x
ⅹ
y
 x : 피승수(multiplicand)
 y : 승수(multiplier)
곱셈 규칙 : 두 비트 중에서 하나만 0 이면, 결과는 0
0×0=0
0×1=0
1×0=0
1×1=1
2진 곱셈 (계속)
2.3.4 2진 나눗셈
 반복적인 자리 이동과 뺄셈으로 수행
 나눗셈에 대한 일반적 수식
D÷V=Q
••••
R
단, D = 피제수(dividend)
V = 제수(divisor)
Q = 몫(quotient)
R = 나머지 수(remainder)
2진 나눗셈 (계속)
2.4 음수 표현
 데이터의 맨좌측 비트(MSB)를 부호 비트(sign bit; 0 : +,
1 : -)로 사용하여, 양수와 음수를 모두 표현
 표현 방법
 부호화-크기 표현(signed-magnitude representation)
 1의 보수 표현(1′s complement representation)
 2의 보수 표현(2′s complement representation)
2.4.1 부호화-크기 표현
 n-비트 2진수에 대한 부호화-크기 표현 방법
 MSB : 부호 비트
 나머지 (n-1) 비트 : 수의 크기(magnitude)
 최대 표현 범위 : -(2n-1-1) ~ +(2n-1-1)
[예] 8-비트 데이터 표현 범위 : -127 ~ +127
(11111111 ~ 01111111)
부호화-크기 표현 (계속)

부호화-크기 표현의 2진수를 10진수로 변환하는 방법
n-비트 2진수: an-1 an-2 an-3 ... a1 a0
A = (-1)an-1(an-2ⅹ2n-2 + an-3 ⅹ2n-3 + … +a1ⅹ21 +a0ⅹ20)
부호화-크기 표현 (계속)
부호화-크기 표현의 결점
 덧셈과 뺄셈을 수행하기 위해서는 부호 비트와 크기 부
분을 별도로 처리해야 한다
① 두 수의 부호를 비교한다.
② 부호가 같은 경우에는 크기 부분들을 더하고, 다른 경우에는
크기 부분의 차이를 구한다.
③ 크기 부분의 절대값이 더 큰 수의 부호를 결과값의 부호로
세트 한다.
 0에 대한 표현 : 두 개  전체 표현 범위 한 개 감소
0 0000000 = + 0
1 0000000 = - 0
2.4.2 보수 표현
 1의 보수 표현 : 모든 비트들을 반전 (0 → 1, 1 → 0).
 2의 보수 표현 : 모든 비트들을 반전하고, 결과값에 1을
더한다. (그 과정에서 만약 MSB로부터 올림수가 발생하면, 버린
다)
보수 표현 (계속)
예제 2-4 (계속)
보수 표현 (계속)

n-비트 2진수의 표현 가능 범위
[예] 8-비트 2진수의 표현 가능 범위
 대부분의 디지털시스템 및 디지털컴퓨터에서 ‘2의 보수’ 사용
[참조]
보수 표현 (계속)
 2의 보수 표현에서 부호 비트 an-1= 0 인 양수를 10진수
로 변환하는 방법
 2의 보수 표현에서 부호 비트 an-1= 1 인 음수를 10진수
로 변환하는 방법
보수 표현 (계속)
2.5 2의 보수 산술 연산
 2의 보수 덧셈(2’complement addition) : 두 수를 더하고,
올림수가 발생하면 버린다(drop-out)
2의 보수 산술 연산 (계속)
 오버플로우(overflow) : 덧셈 결과가 수의 표현 범위를
초과함으로써, 틀린 결과를 산출하는 경우
2의 보수 산술 연산 (계속)
 오버플로우를 검출하는 방법
• 덧셈 과정에서, MSB들 간의 덧셈에서 발생하는 올
림수와 그 아래 비트들 간의 덧셈에서 발생하는 올
림수가 서로 다른 값을 가지면, 오버플로우가 발생
한 것으로 판단
2의 보수 산술 연산 (계속)

2의 보수 뺄셈 (2’complement subtraction)
 감수(subtrahend)에 2의 보수를 취하여 음수화 한 다
음에, 덧셈을 이용하여 수행
A - (+B) = A + (-B)
A - (-B) = A + (+B)
2.6 각종 2진 코드들
2.6.1 10진수 표현을 위한 2진 코드들
2진 코드 (계속)
 BCD(Binary Coded Decimal) 코드 : 네 개의 각 비트들이 2n-1
의 자릿수를 가지는 가중치 코드(weighted code)로서, 8421 코
드라고도 함
 자릿수 = 8, 4, 2, 1
[예] (73902)10 = ( 0111 0011 1001 0000 0010 )BCD
 84-2-1 코드: 우측의 두 비트들이 음의 자릿수(negative
weight)를 가지는 코드 방식
 자릿수 = 8, 4, -2, -1
[예] (0111)84-2-1 = 0×8 + 1×4 + 1×(-2) + 1×(-1)
=4-2-1=1
2진 코드 (계속)
3증수 코드(excess-3 code) : BCD 코드의 각 비트
패턴에 대하여 3(00112) 씩을 더하여 만들어진 코드
[예] (937)10  (1100 0110 1010)3-excess
장점: 10진수에 대한 9의 보수를 구하기 용이
2-out-of-5 코드
 다섯 비트 사용
 특성: 모든 비트 패턴에서 두 비트씩이 1의 값을 가짐
 가중치 코드(weighted code)가 아님  산술연산 불가
 통신 오류 검출 용이:
(오류 발생 시  수신 데이터에서 1의 개수 ≠ 2)
2진 코드 (계속)
그레이 코드(Gray code)
 자릿수(weight)를 가지지 않는 코드
 순서적으로 앞과 뒤의 숫자에 대한 비트 표현에서 단 한 개의 비
트만 서로 다른 값을 가지는 코드
 산술적 연산 불가
 아주 작은 차이를 가지는 연속적인 아날로그 값들을 디지털 값으
로 변환하는 경우에 유용하게 사용
[예] 회전축 상의 위치들에 대한 정보가 연속적으로 디지털 값으로
변환되어 입력되는 시스템 : 위치 이동 시, (한 비트만 바뀌면 되
므로) 데이터 변환 시간 단축 및 오류 발생 가능성 저하
2진 코드 (계속)
2진 코드 (계속)
 2진 코드  그레이 코드 변환
①2진 코드의 최상위 비트(MSB)는 그대로 그레이 코드 의
최상위 비트가 된다.
②그 다음 비트부터는 2진 코드의 좌측부터 우측으로 이동하
면서, 인접한 두 비트들을 더하고, 올림수를 제외한 결과값
이 그레이 코드의 다음 비트가 된다.
[예]
2진 코드 (계속)
 6-비트 2진 코드의 그레이 코드 변환
[예]
2진 코드들 (계속)
 그레이 코드  2진 코드 변환
①그레이 코드의 최상위 비트(MSB)는 그대로 2진 코드의 최상위 비
트가 된다.
②그렇게 결정된 2진 코드의 최상위 비트를 그레이 코드의 다음 비
트와 (대각선 방향으로) 더하고, 올림수를 제외한 결과값이 그레
이 코드의 다음 비트가 된다. 같은 방법을 우측으로 이동하면서
모든 비트들에 적용한다.
[예]
2진 코드 (계속)
 ASCII 코드(American Standard code for Information
Interchange) : 7 비트를 이용하여 문자, 숫자 혹은 특수
문자를 표현하는 국제표준 코드
2진 코드 (계속)
2진 코드들 (계속)
패리티 비트(parity bit)
 오류-검출 코드(Error-detection code)
 통신 과정에서 발생하는 비트 오류를 검출하기 위하여 추가
되는 비트
 한 비트 오류 검출만 가능하며, 정정(correction)은 불가능
 패리티 비트의 종류
• 짝수 패리티(Even parity) : 전체 데이터에 포함되는
1의 수가 짝수가 되도록 패리티 비트를 추가
• 홀수 패리티(Odd parity) : 전체 데이터에 포함되는
1의 수가 홀수가 되도록 패리티 비트를 추가
2진 코드 (계속)
단일 비트 오류 정정 및 두 비트 이상의 오류 검출
 해밍 코드(Hamming code) 이용
<참고문헌: Computer Structure and Architecture –Stallings저,
“컴퓨터시스템구조론” – 김종현 역>