인간이 사용하는 데이터를 컴퓨터 내부에서 어떻게 나타내는가 하는 데이터 표현방법을 이해해야한다.
데이터는 수치데이터와 디지털코드 ( 10진, 영숫자코드 )로 나뉜다
계산방법은 진법과 보수(보수를 이용한 감산)으로 나뉜다.
진법이란 수를 숫자로 나타내는 방법으로 특히 숫자의 위치에 따라 가중치(weight)를 부여하는 방법이다.
1. 가중치는 기수의 승수(거듭제곱)을 이용한다.
2. 기수는 2이상의 양의 정수만 가능하다.
기수가 r( 2 이상의 양의 정수) 인 경우의 진법을 r진법이라고 한다.
ex ) 2진법, 4진법, 8진법, 16진법 등...
r진법에서는 r개의 숫자(0, 1, 2, ... , r-1)로 수를 표현한다.
r진수임을 나타내기 위해 r진수 오른쪽 아래에 기수 r을 표기한다.
ex) 10진법은 10개의 숫자(0~9)로 수를 표현한다.
178.5 = 1 × 10² + 7 × 10¹ + 8 × 10(의 0승) + 5 × 10(-1승)
-> 100 + 70 + 8 + 0.5(5/10)
또한 2진법은 2개의 숫자(0, 1)로서 수를 표현하는데
1010.01(₂)의 경우에는
= 1×2³ + 0×2² + 1×2¹ + 0×2(의 0승) + 0×2(-1승) + 1×2(-2승)
-> 8 + 0 + 2 + 0 + 0.25(1/4)
= 10.25(10진수)
r진수의 10진수 변환 같은 경우 위 처럼 하면 된다.
그럼 10진수의 r진수 변환은 어떻게 해야하는가??
정수부분은 나머지가 0이 될때까지, 소수부분은 소수부분이 0이 될때까지 곱해주면 된다.
정수부분은 거꾸로 올라가면서 적어주면되고 소수부분은 아래로 내려가면서 적어주면된다.
더 자세한 사항은 기초수학 카테고리에서 다루겠다.
보수를 이용한 감산은 다음 게시글에서 다루도록 하겠다.
디지털 코드
교재는 자세히 나와있는데 교수님 강의에서는 3초과 코드와 그레이 코드는 자세히 다루지 않았다.
시간이 나면 나도 이 내용을 보강할 생각이다. (아마 앞에서 계산법을 다뤄서 그런가..)
크게 10진코드와 영숫자코드로 나뉘는데 영숫자 코드 중심으로 다룰 생각이다.
아래에 나오는 10진 코드는 다음 게시글인 보수를 이용한 감산법을 봐야 더 쉽게 이해가 간다.
10진 코드
사람들은 일상에서 10진법에 기초하여 수를 사용하기 때문에 수의 표현 역시 10진법을 사용하는데 익숙하다.
그러나 컴퓨터는 0과 1로 표현하는 2진법을 사용하므로 컴퓨터 내부의 10개의 숫자를 2진 코드로 만들어 활용하게 되는데..
그것이 10진 코드(decimal code)이다.
종류로는
BCD 8421
BCD 2421
BCD 84-2-1
3초과(excess-3) 코드, 그레이 코드등이 있다.
여기서는 BCD 8421, 3초과코드, 그레이코드만 짚고 넘어가겠다.
1) BCD 8421 코드
단순히 BCD코드라고도 하며 10진수 한 자리를 2진수 4비트로 표시한 것이며, 비트의 위치에 따라 8, 4, 2, 1의 가중치가 할당된다.
5 = (0101)BCD
3.8 = (0011.1000)BCD
642 = (0110 0100 0010)BCD
그런데 수를 10진수로 나타내다보니 사용하지않는 비트의 조합이 생긴다.
특히 1010(10), 1011(11), 1100(12), 1101(13), 1110(14), 1111(15) 는 10 이상의 수를 표현하므로 쓰지않는 조합이 된다.
BCD 코드는 산술연산 중 덧셈에 대한 연산이 가장 중요한데, 그 이유는 뺄셈, 곱셈, 나눗셈은 덧셈과 보수를 이용하여 모두 계산되기 때문이다.
① 2진수의 덧셈 규칙에 따라 두 수를 더한다.
② 연산 결과 4비트 2진수값이 9 이하이면 그 값을 그대로 사용한다.
③ 연산 결과 4비트의 2진수값이 9보다 크면 BCD 코드에서는 사용되지 않는 값이므로,
이 경우 그 결과값에 6(0110)을 더한다. 여기서 6만큼을 더하는 이유는 사용되지 않는 비트의 조합이 6개가 있기 때문이다.
만약 올림수가 발생하면 한 자리 높은 자릿수에 올림수를 더한다.
2) 3초과 코드
3초과(excess-3) 코드는 비트의 위치에 따라 각 비트에 가중치를 할당하지 않은 비가중치 코드(unweighted code)이며,
10 진수에 대한 9의 보수를 쉽게 구할 수 있는 장점이 있는 자보수 코드이다.
3) 그레이 코드
그레이 코드(gray code)는 가중치를 갖고 있지 않은 비가중치 코드이며, 산술연산에는 부적합하지만 한 숫자에서 다음숫자로 이동될 때
오직 한 비트만 변하는 특징이 있다.
영숫자코드
->영문자와 숫자를 2진코드로 표현 한 것이다.
일반적으로 영숫자 코드 집합을 만들기위해서 각 코드는 7비트 혹은 8비트로 구성되어야 한다. (7비트 이상)
알파벳이 36문자다.
대표적인 예로는 ASCII 코드와 EBCDIC 코드가 있다.
ASCII 코드는 전체수 128(2의7승)이며, 알파벳과 특수문자를 표현 할 수 있다.
EBCDIC 코드는 전체 구성 Bit 수가 8비트이기 때문에, 에러검출을 위한 패리티 비트를 추가하면 총 9비트가 된다.
대부분의 컴퓨터가 기본단위로 Byte(8비트 당 1바이트)를 쓰기 떄문에 전송 시 비효율적이다.
유니코드는 언어에 상관없이 전세계 문자체계를 표현할 수 있는 코드이다.
ASCII코드의 한계점을 극복하고 UTF-8, UTF-16, UTF-32 등으로 인코딩 방식이 지원이 된다.
2019-03-19 오후 10시 - 글 내용이 빈약하여 수정하였다.
'컴퓨터과학 > 디지털 논리회로' 카테고리의 다른 글
3. 논리게이트와 부울 대수 (0) | 2019.04.13 |
---|---|
2-1 진수 변환 및 보수 (0) | 2019.03.19 |
1-2장. 집적회로와 특성 그리고 양논리와 음논리 (0) | 2019.03.13 |
제 1장 디지털 컴퓨터와 디지털 논리회로 (0) | 2019.03.12 |
디지털 논리 개관 (0) | 2019.03.12 |