[Digital design] BCD코드와 여러가지 Binary Code

2019. 6. 25. 16:54전자공학과 전공과목/digital design-논리회로

학부생의 입장에서 내용을 정리하였으며 피드백을 환영합니다.

 


 

 

BCD code

 

1. BCD code((Binary coded decimal)

: 이진수 네 자리를 묶어 십진수 한 자리로 사용하는 기수법이다.

 

BCD code가 필요한 이유

: 컴퓨터는 모든 연산을 2진법을 사용하지만 사람은 10진법에 익숙해져있다. 따라서 2진수를 10진수로, 10진수를 2진수로 바꿔주어야하기 때문에 BCD code가 필요하다.

 

BCD code

10진수의 각각의 자리를 2진수로 바꿔주면 BCD code가 완성된다.

몇가지 예를 더 들어보면

ex1) (10)10=(0001 0000)BCD

ex2) (56)10=(0101 0110)BCD

 

2. BCD 덧셈

BCD코드를 사용하면 1010~1111 6개의 숫자가 남는다. 그래서 2진수로 덧셈을 했을 때 보정이 필요하다. 

두 2진수의 합이 1010보다 크거나 같으면 0110을 더해준다.

 

2진수의 합이 1010(10)을 넘지 않았으므로 보정은 필요없다.

 

2진수의 합이 1010과 크거나 같기 때문에 +6을 해준다.

 

3자리 수의 덧셈을 다뤄봤다.

 

 

여러가지 Binary Code

1. 다른 가중코드, Excess-3 (3초과코드)

 

자기 보완적 특성

위의 표에서 2421 BCD code와 Excess-3 code는 자기 보완적 특성이 있다. 이것들을 자기 보수수코드 라고도 한다. 이 코드는 10진수의 9의 보수가 0과 1을 바꿈으로써 얻어진다는 특성이 있다. 

 

ex)

395의 9의 보수는 604 인데 자기 보수 코드에서는 

(0110 1100 1000)BCD , (0110 1100 1000)BCD와 같이 0과 1을 바꿔주기만 하면 된다.

 

사실 이 방법이 무엇이 좋은 지 잘 모르겠다. 예전 컴퓨터에서 쓰던 방법이니 방법만 알아두었다.

 

weighted code(가중코드)

우리가 지금까지 배운 가중코드는 (8421)가중코드이다. 

그 외에 (2421), (8,4,-2,-1)가중코드가 존재한다. 앞에서 하던 방법과 똑같이 계산해보면 이해될 것이다.

 

Excess-3(3초과코드, 가중코드 X)

BCD code에 3(0011)을 더한 것이다.

3초과코드는 자기 보완적 특성때문에 옛날 컴퓨터에서 많이 쓰이던 방법이다.

 

2. Gray code와 아스키 코드

 

Gray code(그레이 코드)

 아날로그 시스템에서 아날로그 정보를 디지털 시스템의 이산정보로 바꿔주기 위해 사용된다.

 

그레이 코드는 한 숫자에서 다음 숫자로 갈 때 코드의 단 한 하트만이 변한다는 장점이 있다.

2진수가 정상적으로 한 수에서 다음수로 변화할 때 오류나 애매함이 발생할지도 모르는 경우에 사용된다.

그레이 코드의 이러한 특성때문에 입츨력에는 유리하지만 연산에는 부적절하다. 따라서 아날로그-디지털 변환기에 사용된다.

 

ASCII Character Code(아스키코드)

 7bit 이고 128가지문자를 나타낼 수 있다.

 

3. Error-Detecting Code(오류검출코드)

 

데이터 통신 과정에서 오류를 검출하기 위해 8비트 자리에 패리티 비트로 아스키문자에 더해지는데 이 패리티비트를 비교하여 오류의 유무를 판단한다.

 

짝수 패리티 : 1의 개수가 짝수가 되도록한다.

홀수 패리티 : 1의 개수가 홀수가 되도록한다.

 

이러한 오류검출 방법에는 2가지의 허점이 있다.

1) 짝수 개의 오류가 발생했을 시 검출해 낼 수 없다.

2) 오류를 발견해도 어디에 오류가 있는지 모른다.