[디지털 공학] 기초 개념

팬 인 (Fan-in), 팬 아웃 (Fan-out)

입력핀 출력핀 생각하면 OK.

2진수

0과 1로만 이루어진 수 표현 체계.

회로에서는 On/Off만 표현하는게 더 싸게 먹히기 때문에 (전압 측정시 오차가 있어도 됨) 씀.

보수

다른 진법도 보수가 있지만, 귀찮으니까 2진수 기준.

보수는 보통 원래 수의 음수 취급 받습니다. signed integer의 경우, 양수는 보통 맨 앞이 0이고 보수를 취하면 1이기 때문에 0일 경우 양수, 1일 경우 음수로 계산됩니다.

1의 보수

단순히 0 -> 1, 1 -> 0 치환한 수.

예를 들어, 0011이 있으면 1100이 됨.

1의 보수로 뺄셈 계산

  1. 빼는 수에 1의 보수를 취함.
  2. 이를 더함.
  3. 캐리 비트 (자리 올림)가 1이라면 결과값에 1을 더함.
  4. 캐리 비트 (자리 올림)가 0이라면 빼는 수가 더 크다는 뜻이고, 음수로 표현하고 싶다면 결과값에 다시 보수를 취함.

예시 1. 0011 - 0010.

  1. 빼는 수에 보수를 취하면 1101.
  2. 00111101을 더하면 0000. 캐리 비트가 발생함.
  3. 캐리 비트가 발생하였으니 1을 더함. 0001.

예시 2. 0011 - 0101.

  1. 빼는 수에 보수를 취하면 1010.
  2. 00111010을 더하면 1101.
  3. 캐리 비트가 발생하지 않았기 때문에, 답은 1101.
  4. 음수 표기를 원한다면 (2)에 보수를 취함. -0010.

2의 보수

책이 구린건지 안 써있던데, 원래는 한 자리 더 큰 2의 제곱수에서 해당 수를 빼 얻은 수 입니다.

즉, 1011에 2의 보수를 구하면 10000 - 1011 = 0101이 됩니다.

위에 작성한대로 보수를 이용해 계산하면...

  1. 01011의 보수를 구함, 10100
  2. 1000010100을 더하면 00100. 캐리비트 발생.
  3. 캐리비트가 발생하였기 때문에 답은 0101.

쉽게 구하려면, 1의 보수를 구하고 1을 더하기만 하면 됩니다. 이유는 아래와 같습니다.

  1. 최상위 비트 외에는 전부 0임. 즉 일단 한 자리 작은 수라면 몇을 더해도 그대로 나옴.
  2. 언제나 한 자리 더 많고, 원래 수의 보수를 구하면 맨 앞자리가 1이기 때문에 언제나 캐리 비트가 발생.

BCD (Binary Coded Demical)

2진수로 표현된 10진수를 의미.

8421 코드

8421은 각 자리가 차지하는 값을 말합니다.

         0    1    0    1
binary  2^3  2^2  2^1  2^0
 8421    8    4    2    1

가장 큰 특징은 2진수와 같은 값을 사용한다는 것. 이로 인해 변환이 쉽습니다.

  • 0 -> 0000
  • 1 -> 0001
  • 2 -> 0010
  • 3 -> 0011
  • 4 -> 0100
  • 5 -> 0101
  • 6 -> 0110
  • 7 -> 0111
  • 8 -> 1000
  • 9 -> 1001
  • 10 -> 0001 0000

다만 계산시 자리바꿈이 꽤 귀찮기 때문에 그냥 계산은 10진수로.

그레이 코드 (Gray Code)

어떤 수라도 바로 앞 수와 단 한글자만 달라지는 표현법. 이후 카르노맵에서 사용하기 때문에 알아두면 좋습니다.

  • 0 -> 0000
  • 1 -> 0001
  • 2 -> 0011
  • 3 -> 0010
  • 4 -> 0110
  • 5 -> 0111
  • 6 -> 0101
  • 7 -> 0100
  • 8 -> 1100
  • 9 -> 1101
  • 10 -> 1111
  • 11 -> 1110
  • 12 -> 1010
  • 13 -> 1011
  • 14 -> 1001
  • 15 -> 1000

꿀팁 하나.

긴 종이에 0부터 7까지 쓴다고 생각해봅시다.

000 001 011 010 110 111 101 100

이제 오른쪽에 선을 하나 긋고, 좌우 반전 시켜서 적어줍니다.

000 001 011 010 110 111 101 100 | 100 101 111 110 010 011 001 000

선의 왼쪽에는 0을 붙이고, 오른쪽에는 1을 붙여줍니다.

0000 0001 0011 0010 0110 0111 0101 0100 | 1100 1101 1111 1110 1010 1011 1001 1000

선을 지우면 15까지 쓴 게 됩니다.

패리티 비트

오류 검출 코드.

8비트의 경우, 마지막 8비트째에 넣어 앞의 데이터에서 1이 짝수개인지 홀수개인지 나타냅니다.

해밍코드

패리티코드를 2^n (n = 0 to Inf.) 자리에 넣은 코드. 오류를 수정할 수도 있습니다.