Combinador de aritmética

Overview
O Arithmetic combinator é uma entidade de rede de circuito que executa uma única operação binária sobre sinais das conexões de fio de circuito e emite o resultado como um sinal. Ele primeiro soma todos os sinais que chegam pelas entradas conectadas de 

Se tanto a entrada de Green wire quanto a de Red wire forem selecionadas para um operando, os valores desse operando serão a soma desses fios. Quando nenhum operando for o sinal each, o combinador produz um único sinal de saída: ele recupera o valor do sinal esquerdo escolhido e do sinal direito escolhido (após a soma das entradas) e retorna o resultado da operação no sinal de saída especificado. Quando um operando é o sinal each, o combinador pode emitir ou um único sinal ou o sinal each. Se a saída for each, o operador é aplicado separadamente ao valor de cada sinal de entrada em conjunto com o outro operando, e cada resultado é emitido no mesmo tipo de sinal. Se a saída for um único sinal, a operação é aplicada separadamente a cada sinal de entrada, os resultados individuais são somados, e esse total é enviado no sinal de saída configurado.
A divisão em arithmetic combinators usa truncamento em direção a zero para resultados inteiros. Por exemplo:
- 21 / 10 = 2, 19 / 10 = 1
- −21 / 10 = −2, −19 / 10 = −1
- 21 / −10 = −2, 19 / −10 = −1
- −21 / −10 = 2, −19 / −10 = 1
O operador de resto (Modulo (%)) retorna o resto após a divisão e segue as regras de sinal mostradas pelos exemplos:
- 13 % 3 = 1, 13 % −3 = 1
- −13 % 3 = −1, −13 % −3 = −1 Modulo pode ser combinado com divisão truncada para extrair dígitos de um número; por exemplo, (24321 / 10000) % 10 = 2, (24321 / 1000) % 10 = 4, e assim por diante.
Bit shift left e bit shift right operam sobre a representação binária dos números. Os shifts são aritméticos: left shifts inserem 0 no bit menos significativo e descartam o bit mais significativo. Right shifts preservam o bit de sinal: se o valor for positivo, um 0 é inserido no MSB; se for negativo, um 1 é inserido para manter o sinal, e o bit menos significativo é descartado.
- Observações práticas:
- Entradas conectadas por Green wire e Red wire são combinadas dentro do combinador; selecionar ambos os fios para uma entrada faz com que seus valores sejam somados antes da operação.
- Você pode fornecer constantes como qualquer operando; no máximo um operando pode ser o sinal virtual each.
- Escolha cuidadosamente o modo de saída: output = each aplica a operação por tipo de sinal e preserva as chaves dos sinais, enquanto output = single agrega resultados em um único sinal.
- A divisão trunca em direção a zero; planeje o comportamento inteiro ao dividir números negativos.
- Use modulo com divisão truncada para isolar dígitos ou restos; lembre-se de que o sinal do modulo segue o sinal do operando à esquerda.
- Bit shifts são aritméticos: right shift preserva o sinal, left shift insere zeros à direita.
- Combinar combinators em série ou em paralelo pode implementar aritmética mais complexa, comparações e lógica para exibição de dígitos.