Respostas:
O resultado de uma divisão de módulo é o resto de uma divisão inteira dos números fornecidos.
Que significa:
27 / 16 = 1, remainder 11
=> 27 mod 16 = 11
Outros exemplos:
30 / 3 = 10, remainder 0
=> 30 mod 3 = 0
35 / 3 = 11, remainder 2
=> 35 mod 3 = 2
A maioria das explicações perde uma etapa importante, vamos preencher a lacuna usando outro exemplo.
Dado o seguinte:
Dividend: 16
Divisor: 6
A função de módulo se parece com isto:
16 % 6 = 4
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:
16 / 6 = 2
Em seguida, multiplique o resultado da divisão acima ( 2
) pelo nosso divisor ( 6
):
2 * 6 = 12
Finalmente, subtraia o resultado da multiplicação acima ( 12
) do nosso dividendo ( 16
):
16 - 12 = 4
O resultado desta subtração,, 4
o resto , é o mesmo resultado do nosso módulo acima!
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:
15 / 12 = 1, remainder 3
Você encontra este exemplo melhor explicado na Wikipedia: Artigo do Módulo da Wikipedia
A fórmula simples para calcular o módulo é: -
[Dividend-{(Dividend/Divisor)*Divisor}]
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
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.
Muito simples: a % b
é definido como o restante da divisão de a
por b
.
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
5% 3 = 2
3)5(1
3
-----
2
mas e se o divisor for menor que o dividendo
dividendo = 3 divisor = 5
3% 5 = 3 ?? como
Isso ocorre porque, uma vez que 5 não pode dividir 3 diretamente, o módulo será o que o dividendo é
Espero que essas etapas simples ajudem:
20 % 3 = 2
20 / 3 = 6
; não inclua .6667
- apenas ignore3 * 6 = 18
20 - 18 = 2
, que é o restante do móduloMais 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 tudo 2
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)
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
A divisão do módulo é bastante simples. Ele usa o resto em vez do quociente.
1.0833... <-- Quotient
__
12|13
12
1 <-- Remainder
1.00 <-- Remainder can be used to find decimal values
.96
.040
.036
.0040 <-- remainder of 4 starts repeating here, so the quotient is 1.083333...
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
para n % 12
é:
{0,1,2,3,4,5,6,7,8,9,10,11,0,1,2,3,4,5,6,7,8,9,10,11,0,[...],4}
Sob essa luz, o módulo, bem como seus usos, tornam-se muito mais claros.
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 :
d = ( d / q ) * q + ( d % q )
Como você pode ver, o valor de d%q
depende do valor de d/q
. Geralmente, para inteiros positivos d/q
é truncado em direção a zero , por exemplo 5/2 dá 2, portanto:
5 = (5/2)*2 + (5%2) => 5 = 2*2 + (5%2) => 5%2 = 1
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:
-5 = (-5/2)*2 + (-5%2) => -5 = -2*2 + (-5%2) => -5%2 = -1
mas no segundo:
-5 = (-5/2)*2 + (-5%2) => -5 = -3*2 + (-5%2) => -5%2 = +1
Como disse antes, basta lembrar o invariante , que é o divisão euclidiana .
Detalhes adicionais:
27% 16 = 11
Você pode interpretar desta forma:
16 vai 1 vez em 27 antes de passar.
16 * 2 = 32.
Então, você poderia dizer que 16 vai uma vez em 27 com o restante de 11.
De fato,
16 + 11 = 27
Outro exemplo:
20% 3 = 2
O poço 3 passa 6 vezes em 20 antes de passar.
3 * 6 = 18
Para somar 20, precisamos de 2, de modo que o restante da expressão do módulo seja 2.
É 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.
Escreva uma tabela começando com 0.
{0,1,2,3,4}
Continue a tabela em linhas.
{0,1,2,3,4}
{5,6,7,8,9}
{10,11,12,13,14}
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.
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
16/5= 3 Remainder 1 i.e 16 Mod 5 is 1.
0/5= 0 Remainder 0 i.e 0 Mod 5 is 0.
-14/5= 3 Remainder 1 i.e. -14 Mod 5 is 1.
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
Esta foi a melhor abordagem para entender o operador de módulo. Vou apenas explicar a você por meio de exemplos.
16 % 3
Quando você divide esses dois números, o resto é o resultado. É assim que eu faço.
16 % 3 = 3 + 3 = 6; 6 + 3 = 9; 9 + 3 = 12; 12 + 3 = 15
Então o que resta para 16 é 1
16 % 3 = 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