Eu realmente não entendo como funciona a divisão de módulo. Eu estava calculando 27 % 16
e acabei com 11
e não entendo por quê.
Não consigo encontrar uma explicação em termos leigos online. Alguém pode elaborar em um nível muito alto o que está acontecendo aqui?
language-agnostic
math
modulo
division
NSWOA
fonte
fonte
A maioria das explicações perde uma etapa importante, vamos preencher a lacuna usando outro exemplo.
Dado o seguinte:
A função de módulo se parece com isto:
Vamos determinar por que isso acontece.
Primeiro, execute a divisão inteira , que é semelhante à divisão normal, exceto que qualquer número fracionário (também conhecido como resto) é descartado:
Em seguida, multiplique o resultado da divisão acima (
2
) pelo nosso divisor (6
):Finalmente, subtraia o resultado da multiplicação acima (
12
) do nosso dividendo (16
):O resultado desta subtração,,
4
o resto , é o mesmo resultado do nosso módulo acima!fonte
16 // 6 >>> 2
e16 / 6 >>> 2.6666666666666665
Talvez o exemplo com um relógio possa ajudá-lo a entender o módulo.
Um uso familiar da aritmética modular é seu uso no relógio de 12 horas, no qual o dia é dividido em dois períodos de 12 horas.
Digamos que atualmente temos este horário: 15:00
Mas você também poderia dizer que são 15:00
Isso é exatamente o que o módulo faz:
Você encontra este exemplo melhor explicado na Wikipedia: Artigo do Módulo da Wikipedia
fonte
A fórmula simples para calcular o módulo é: -
Então, 27% 16: -
27- {(27/16) * 16}
27- {1 * 16}
Resposta = 11
Nota :
Todos os cálculos são com números inteiros. No caso de um quociente decimal, a parte após o decimal deve ser ignorada / truncada.
por exemplo: 27/16 = 1,6875 deve ser considerado apenas como 1 na fórmula mencionada acima. 0,6875 é ignorado.
Compiladores de linguagens de computador tratam um inteiro com parte decimal da mesma maneira (truncando após o decimal) também
fonte
O operador de módulo pega uma declaração de divisão e retorna o que sobrou desse cálculo, os dados "restantes", por assim dizer, como 13/5 = 2. O que significa que há 3 sobrando ou remanescentes desse cálculo. Por quê? porque 2 * 5 = 10. Assim, 13 - 10 = 3.
O operador de módulo faz todos os cálculos para você, 13% 5 = 3.
fonte
a divisão do módulo é simplesmente isto: divida dois números e retorne apenas o resto
27/16 = 1 com 11 restantes, portanto 27% 16 = 11
idem 43/16 = 2 com 11 sobrando, então 43% 16 = 11 também
fonte
Muito simples:
a % b
é definido como o restante da divisão dea
porb
.Veja o artigo da Wikipedia para mais exemplos.
fonte
Eu gostaria de acrescentar mais uma coisa:
é fácil calcular o módulo quando o dividendo é maior / maior que o divisor
dividendo = 5 divisor = 3
mas e se o divisor for menor que o dividendo
dividendo = 3 divisor = 5
Isso ocorre porque, uma vez que 5 não pode dividir 3 diretamente, o módulo será o que o dividendo é
fonte
Espero que essas etapas simples ajudem:
20 / 3 = 6
; não inclua.6667
- apenas ignore3 * 6 = 18
20 - 18 = 2
, que é o restante do módulofonte
Mais fácil quando o seu número após o decimal (0.xxx) é curto. Então tudo que você precisa fazer é multiplicar esse número pelo número após a divisão.
Ex:
32 % 12 = 8
Você faz
32/12=2.666666667
Então você joga tudo2
fora e se concentra no0.666666667
0.666666667*12=8
<- Essa é a sua resposta.(novamente, só é fácil quando o número após o decimal é curto)
fonte
A divisão do módulo fornece o restante de uma divisão, ao invés do quociente.
fonte
Digamos que você tenha 17 mod 6.
o total de 6 vai te levar o mais próximo de 17, será 12 porque se você passar de 12 você terá 18, que é mais do que a questão de 17 mod 6. Você então pegará 12 e menos de 17, o que lhe dará sua resposta, neste caso 5.
17 mod 6 = 5
fonte
A divisão do módulo é bastante simples. Ele usa o resto em vez do quociente.
13/12 = 1R1, logo 13% 12 = 1.
Isso ajuda a pensar no módulo como um "ciclo".
Em outras palavras, para a expressão
n % 12
, o resultado será sempre <12.Isso significa que a sequência do conjunto
0..100
paran % 12
é:Sob essa luz, o módulo, bem como seus usos, tornam-se muito mais claros.
fonte
A única coisa importante a entender é que o módulo (denotado aqui por% como em C) é definido através da divisão euclidiana .
Para quaisquer dois
(d, q)
inteiros, o seguinte é sempre verdadeiro :Como você pode ver, o valor de
d%q
depende do valor ded/q
. Geralmente, para inteiros positivosd/q
é truncado em direção a zero , por exemplo 5/2 dá 2, portanto:Porém, para números inteiros negativos a situação é menos clara e depende do idioma e / ou do padrão. Por exemplo, -5/2 pode retornar -2 (truncado para zero como antes), mas também pode retornar -3 (com outro idioma).
No primeiro caso:
mas no segundo:
Como disse antes, basta lembrar o invariante , que é o divisão euclidiana .
Detalhes adicionais:
fonte
Você pode interpretar desta forma:
16 vai 1 vez em 27 antes de passar.
Então, você poderia dizer que 16 vai uma vez em 27 com o restante de 11.
De fato,
Outro exemplo:
O poço 3 passa 6 vezes em 20 antes de passar.
Para somar 20, precisamos de 2, de modo que o restante da expressão do módulo seja 2.
fonte
É simples, o operador Modulus (%) retorna o resto após a divisão inteira. Vamos dar o exemplo da sua pergunta. Como 27% 16 = 11? Quando você simplesmente divide 27 por 16, ou seja, (27/16), o restante é 11, e é por isso que sua resposta é 11.
fonte
Escreva uma tabela começando com 0.
Continue a tabela em linhas.
Tudo na coluna um é um múltiplo de 5. Tudo na coluna 2 é um múltiplo de 5 com 1 como resto. Agora a parte abstrata: você pode escrever (1) como 1/5 ou como uma expansão decimal. O operador de módulo retorna apenas a coluna ou, de outra forma, retorna o resto na divisão longa. Você está lidando com o módulo (5). Módulo diferente, mesa diferente. Pense em uma tabela de hash.
fonte
Quando dividimos dois inteiros, teremos uma equação semelhante a esta:
A / B = Q resto R
A é o dividendo; B é o divisor; Q é o quociente e R é o resto
Às vezes, só estamos interessados em saber qual é o resto quando dividimos A por B. Para esses casos, há um operador chamado operador de módulo (abreviado como mod).
Exemplos
Consulte o artigo da Khan Academy para obter mais informações.
Na ciência da computação, a tabela Hash usa o operador Mod para armazenar o elemento onde A serão os valores após o hashing, B será o tamanho da tabela e R é o número de slots ou chave onde o elemento é inserido.
Veja Como funciona uma tabela hash para mais informações
fonte
Esta foi a melhor abordagem para entender o operador de módulo. Vou apenas explicar a você por meio de exemplos.
Quando você divide esses dois números, o resto é o resultado. É assim que eu faço.
Então o que resta para 16 é 1
Aqui está mais um exemplo: o
16 % 7 = 7 + 7 = 14
que resta para 16? É2
16 % 7 = 2
Mais uma:
24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24
. Então, o resto é zero,24 % 6 = 0
fonte