Passando attraverso l' operazione Modulo (il viale che ho inserito esplorando la differenza tra rem
emod
) mi sono imbattuto in:
In matematica il risultato dell'operazione modulo è il resto della divisione euclidea. Tuttavia, sono possibili altre convenzioni. Computer e calcolatrici hanno vari modi di memorizzare e rappresentare numeri; pertanto la loro definizione dell'operazione modulo dipende dal linguaggio di programmazione e / o dall'hardware sottostante.
Domande:
- Passando attraverso la divisione euclidea ho scoperto che il resto di questa operazione è sempre positivo (o 0). Quale limitazione dell'hardware del computer sottostante costringe i progettisti del linguaggio di programmazione a differire dalla matematica?
- Ogni linguaggio di programmazione ha una regola predefinita o indefinita in base alla quale il risultato dell'operazione modulo ottiene il suo segno. Quale logica viene adottata mentre si fanno queste regole? E se l'hardware sottostante è la preoccupazione, allora le regole non dovrebbero cambiare in base a ciò, indipendentemente dal linguaggio di programmazione?
(-3)/2 == -1
. Questa definizione può essere utile. Quando vuoi %
essere coerente con questa divisione soddisfacente x == (x/y)*y + x % y
, finisci con la definizione di %
usato in C #.