Por que o operador% é referido como o operador "módulo" em vez do operador "restante"?

oje, no trabalho, tive uma discussão interessante com um dos meus colegas de trabalho. Ele ficou surpreso quando aconteceu o seguinte:

assert(-1 % 10 == -1)  //Expecting 9

Então, quando ele veio me perguntar sobre isso, eu disse a ele "bem, isso faz sentido. Quando você divide -1 por 10, obtém 0 com -1 restante. No entanto, seu argumento era que o operador do módulo deveria ser verdadeiro ao modelo "sempre positivo" .Fiz uma pequena pesquisa e descobri que o módulo a que ele estava se referindo se parece com isso:

Q seja o quociente inteiro de a e n. Seja r o restante. Então

a = n * q + r

A definiçãoI estava usando, no entanto, parece ser a versão Knuth do módulo, que é:

Seja q o piso de um dividido por n. Seja r o restante. Então

r = a - n * q

Então, minha pergunta é por que acabou no padrão FORTRAN (e subseqüentemente no padrão C) ter o operador de módulo truncado em direção a 0? Parece-me um nome impróprio chamá-lo de "módulo" e não de "restante" (em matemática, a resposta realmente deve ser 9). Isso está relacionado a como o hardware está fazendo a divisão?

Para referência

Wikipedia on Modulusntrada @MSDN no operador "módulo"
(Sim, eu sei que é para o VS2003 ... Estou preso com ele atualmente. Sadface) operador @Modulus muda Não assuma o restante positivo ...

TLDR; O hardware é o motivo pelo qual o operador do módulo trunca para 0?

questionAnswers(6)

yourAnswerToTheQuestion