시험이 끝나고 할 짓이 없어서 컴퓨터구조개론 수업에서 배운 Full Adder를 마인크래프트에서 직접 구현해봤다. 4-bit Full Adder의 자세한 스펙은 아래와 같다.
4-bit Full Adder
Input
- : Each bit of the number A
- : Each bit of the number B
Output
- : Result of the sum of each bit
- : Overflow Sign
레드스톤으로 AND, OR, XOR 게이트를 잘 조합하면 만들 수 있다. 그러니 우선 각 논리 게이트를 레드스톤으로 구현할 줄 알아야 한다. 마인크래프트에서 논리 게이트를 구현하는 방법은 다양해서 나보다 더 쉽게 구현할 수도 있다. 우선 내가 구현한 방법을 정리해보았다.
마인크래프트에서 레드스톤 토치는 신호를 생성하면서도 받은 신호를 반전시키는 역할을 한다. 아래 그림에서 2개의 토치가 레드스톤으로 연결되어 있는데, 각 레버를 당기면 해당하는 토치가 꺼지게 된다. 하지만 레버를 하나만 당길 경우 여전히 하나의 토치가 꺼지지 않기 때문에 두 토치 사이의 레드스톤 신호는 1이고, 아래 토치에 의해 신호가 0으로 반전되어 램프는 켜지지 않는다. 2개의 레버를 모두 당긴다면 토치 2개가 모두 꺼지고 그 사이 레드스톤의 신호가 0이 된다. 그리고 그 신호가 아래 토치에 의해 반전되어 1의 신호가 전달되고 램프가 켜지게 되는 것이다.
OR Gate는 매우 간단하다. 두 레버를 레드스톤으로만 연결하면 끝이다. 이렇게 하면 하나의 레버만 당겨도 램프가 켜지게 된다.
XOR Gate는 다소 복잡하다. 정확한 원리는 직접 레버를 당겨보면서 관찰해보면 될 듯하다.
AND, OR, XOR 게이트를 구현했으니 이를 조합하여 4-bit Full Adder를 만들어보자.
회로를 보면 1-bit Full Adder 4개가 연결되어 있는데 Carry Out bit가 다음 Full Adder의 Carry In으로 입력되는 것을 확인할 수 있다. 결국 마지막에 출력된 Carry Out 신호는 Overflow를 감지하는 역할을 한다.
첫 번째 레버를 당기면 Addition 모드에서 Subtraction 모드로 전환할 수 있고, 나머지 레버는 A와 B 두 숫자의 각 비트를 활성화 시킨다. 그리고 결과는 피스톤으로 연결된 이진수 디스플레이에 나타난다. 아래 그림들은 몇 가지 계산 결과이다.
Example
0110 + 0011 = 1001
위 결과에서 Subtraction 레버만 당겨주면 뺄셈 결과가 계산된다.
Example
0110 - 0011 = 0011