프로그램 가능한 레드넷 제어기(PRC) Part.5

마인크래프트 1.6.2, 마인팩토리 리로디드 2.7.0B8 기준으로 작성되었습니다.

이번에는 숫자 연산(아날로그 연산)과 관련된 회로들에 대해서 알아보겠습니다. 사실 회로라고 하긴 애매한 분야지만요.

가산(덧셈, Adder) – 두개의 입력을 받아서 더한 값을 출력합니다. 3편에서 나온 디지털 가산 회로의 경우 0 또는 0이 아닌 숫자로 0과 1의 입력을 처리하지만, 지금 설명하는 아날로그 가산 회로는 입력받은 숫자를 그대로 더해서 출력합니다.

감산(뺄셈, Subtractor) – 두개의 입력을 받아서 뺀 값을 출력합니다. 사용 방법은 가산과 동일합니다.

부호 반전(Negator) – 입력된 값의 부호(음수인지 양수인지)를 반대로 바꿉니다. PRC에서 직접 숫자를 입력할 수 있는 범위가 0 ~ 255로 제한되어 있기에 음수값을 입력해야 하는 경우 이 회로를 사용하면 됩니다.

최대(Maximum) – 입력받은 값들 중 가장 큰 값을 출력합니다.

최소(Minimum) – 입력받은 값들 중 가장 작은 값을 출력합니다.

PRC에는 현재 위와 같은 숫자 연산과 관련된 회로들이 있습니다. 마인크래프트의 세계에서 숫자를 취급하는게 쉽지 않다 보니 쓸 일이 많지는 않겠지만요. 그럼 숫자와 관련된 회로들을 몇가지 더 알아보겠습니다.

우선 비례(Scaler)라는 회로가 있습니다. 예를 들어 10점 만점중에 5점을 받았다면 100점 만점이라면 50점이지요. 이런 식의 서로 다른 두 범위에서 한쪽에서의 위치가 다른쪽에서는 어디쯤인지 알기 위한 회로가 비례 회로입니다. 입력으로는 입력값과 함께 입력값의 범위, 그리고 출력값의 범위를 받습니다.

그 다음은 자릿수 분해(Decompose Int -> Decimal)입니다. 숫자를 입력받으면 각 자릿수별로 출력을 내보냅니다. 만약 123이라는 숫자를 넣는다면 D0(1의 자리)에는 3, D1(10의 자리)에는 2, D2(100의 자리)에는 1을 내보냅니다. 나머지는 0을 내보냅니다. 즉, D0 부터 D9 까지가 자릿수를 나타냅니다. 그리고 가장 처음에 있는 SN은 입력된 숫자가 0이거나 양수일 경우 0, 음수일 경우 15를 출력합니다. 즉, 입력받은 숫자의 부호를 나타냅니다.

마지막으로 난수 발생(Randomizer)입니다. 난수란 무작위로 만들어지는 숫자로 난수 발생 회로는 이러한 무작위 숫자를 만들기 위한 회로입니다. 디지털 난수 발생은 별도의 입력값 없이 매 틱마다 0 또는 15를 출력하고, 아날로그 난수 발생은 최소값과 최대값을 받아서 그 범위 내의 임의의 값을 출력합니다.

Advertisements