BCD 코드와 3초과 코드
BCD코드(8421)는 10진수 0부터9까지를 2진화한 코드로 실제 표기는 2진수지만 10진수처럼 사용한다. 즉, 1010부터 1111까지 6개는 사용하지 않는다. 다음 표는 10진수 각 자리에 해당한는 10진수를 그대로 2진화한 값이다.
BCD코드의 연산은 10진수 처럼 연산한다. 그러나 계산 결과가 BCD코드를 벗어날 때, 즉 9를 초과하는 경우에는 계산 결과에 6(0110)(BCD)을 더해준다.
3초과 코드는 BCD코드에 3(0011)을 더하여 나타낸 코드이다. 즉, 3초과코드는 10개 코드만 있는 10진 코드이며, 0000 0001 0010 1101 1110 1111은 3초과 코드에 없는 코드이다. 3초과 코드는 자기보수의 성질을 가지며 현재값에서 1의 보수를 취하면 10진수에서 9의 보수에 해당하는 값이 된다.
다양한 2진 코드들
BCD,3초과 코드 뿐아니라 여러가지 코드가 있으며, 이들은 크게 두가지로 나눌 수 있는데 하나는 가중치코드이고 다른하나는 비가중치 코드이다.
가중치 코드는 각 비트 위치에 따라서 값이 정해진 코드이다. 비가중치코드는 각 위치에 해당하는 값이 없는 코드를 말한다. 이러한 코드들은 데이터 변환과 같은 특수한 용도로 사용한다. 3초과 코드는 앞 절에서 설명했던 것처럼 BCD코드에 3을 더하여 만들어진 코드로, 10진수에 대한 9의 보수 성질을 가진다는 것을 알고있다.
그레이 코드
그레이 코드는 가중치가 없기 대문에 연산에는 부적합하다. 대신에 아날로그-디지털 변환기나 입출력 장치 코드로 주로 사용한다. 그레이 코드의 특징은 연속되는 코드들간에 한 비트만 변하여 새로운 코드가 되며, 입력 코드로 사용하면 오차가 작아지는 특징이 있다.
2진 코드를 그레이 코드로 바꾸는 방법을 살펴보자. 최상위비트(MSB)는 그대로 내려쓰고, 그레이 비트부터 앞의 2진비트와 그 다음 2진 비트를 비교하여 같으면0,다르면1을 내려쓴다. 여기서 +는 XOR를 나타내며, 두개의 2진 비트를 비교하여 같으면0,다르면1을 나타내는 논리 연산자이다.
그레이코드를 2진코드로 바꾸는 방법을 알아보자 그레이 코드의 MSB는 마찬가지로 그대로 내려쓴다. 그 다음부터는 생성된 2진 비트와 그레이 코드의 다음 비트를 비교하여 같으면0, 다르면1을 내려쓴다.
에러 검출 코드
패리티 비트
에러 검출 코드로 가장 간단하게 사용되는 것이 패리티 비트를 사용한 코드이며, 주로 컴퓨터 내부의 주기억장치에서 사용한다. 메모리에 저장하거나 전달할 데이터에 패리티를 붙여서 전송한다. 패리티에는 데이터에서 1의 개수를 짝수로 맞추어 주는 작수 패리티와 홀수로 맞추어 주는 홀수 패리티가 있다. 짝수 패리티의 경우 데이터가 전달된 후 1의 개수가 짝수이면 정확하게 전달된 것이고, 홀수 개이면 전송과정에서 에러가 발생한것이다. 하지만 여러비트에서 에러가 발생하면 이를 알기 힘들다.(이는 확률적으로 매우 낮다.)
영숫자 코드
앞에서 설명한 코드들은 연산용 숫자 코드들이며, 여기서는 그 밖에 컴퓨터에서 사용하는 각종 제어코드,문자,숫자,특수문자를 표시하기 위한 코드들을 살펴보자.
1. ASCII 코드
정보 교환용 미국 표준코드이며, 3비트 존과 4비트 디지트에 1비트의 패리티 비트를 추가하여 만든 8비트 코드이며 128가지 문자를 표현한다.
2. 유니코드
유니코드는 플랫폼,프로그램,언어와 상관없이 모든 문자에 대해 고유 번호를 제공한다. ASCII코드의 한계를 극복하기 위한 표준 코드.
'Computer Architecture > 논리회로' 카테고리의 다른 글
[5] CH7 조합논리회로 < 가산기 , 비교기 > (0) | 2021.11.16 |
---|---|
[4] CH6 논리식의 간소화 (0) | 2021.11.16 |
[3] CH5 불 대수 (0) | 2021.11.08 |
[2] CH4 논리 게이트 (0) | 2021.11.07 |
[0] CH2 수의 체계 (0) | 2021.11.06 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!