Passando pela operação do Módulo (a avenida que entrei enquanto explorava a diferença entre rem
emod
) me deparei com:
Em matemática, o resultado da operação do módulo é o restante da divisão euclidiana. No entanto, outras convenções são possíveis. Computadores e calculadoras têm várias maneiras de armazenar e representar números; portanto, sua definição da operação do módulo depende da linguagem de programação e / ou do hardware subjacente.
Questões:
- Ao passar pela divisão euclidiana , descobri que o restante dessa operação é sempre positivo (ou 0). Que limitação do hardware do computador subjacente força os designers de linguagem de programação a diferir da matemática?
- Toda linguagem de programação possui uma regra predefinida ou indefinida, segundo a qual o resultado da operação do módulo recebe seu sinal. Que lógica é adotada ao fazer essas regras? E se o hardware subjacente é a preocupação, as regras não devem mudar de acordo com isso, independentemente da linguagem de programação?
(-3)/2 == -1
. Essa definição pode ser útil. Quando você quer %
ser consistente com essa divisão, x == (x/y)*y + x % y
você acaba com a definição de %
usado em C #.