Al pasar por la operación Modulo (la avenida que ingresé mientras exploraba la diferencia entre rem
ymod
) me encontré con:
En matemáticas, el resultado de la operación de módulo es el resto de la división euclidiana. Sin embargo, otras convenciones son posibles. Las computadoras y las calculadoras tienen varias formas de almacenar y representar números; por lo tanto, su definición de la operación del módulo depende del lenguaje de programación y / o del hardware subyacente.
Preguntas:
- Al pasar por la división euclidiana , descubrí que el resto de esta operación siempre es positivo (o 0). ¿Qué limitación del hardware informático subyacente obliga a los diseñadores de lenguajes de programación a diferenciarse de las matemáticas?
- Cada lenguaje de programación tiene una regla predefinida o indefinida según la cual el resultado de la operación de módulo obtiene su signo. ¿Qué razón se adopta al hacer estas reglas? Y si el hardware subyacente es la preocupación, ¿no deberían cambiar las reglas de acuerdo con eso, independientemente del lenguaje de programación?
(-3)/2 == -1
. Esta definición puede ser útil. Cuando desea %
ser coherente con el cumplimiento de esta división x == (x/y)*y + x % y
, termina con la definición de %
utilizado en C #.