논리회로 설계 제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저,
“컴퓨터시스템구조론” – 김종현 역>