Odpowiedzi:
Wynikiem dzielenia modulo jest reszta z dzielenia liczb całkowitych podanych liczb.
To znaczy:
27 / 16 = 1, remainder 11
=> 27 mod 16 = 11
Inne przykłady:
30 / 3 = 10, remainder 0
=> 30 mod 3 = 0
35 / 3 = 11, remainder 2
=> 35 mod 3 = 2
W większości wyjaśnień brakuje jednego ważnego kroku, wypełnijmy lukę innym przykładem.
Biorąc pod uwagę następujące kwestie:
Dividend: 16
Divisor: 6
Funkcja modułu wygląda następująco:
16 % 6 = 4
Ustalmy, dlaczego tak jest.
Najpierw wykonaj dzielenie liczb całkowitych , które jest podobne do zwykłego dzielenia, z wyjątkiem tego, że każda liczba ułamkowa (inaczej reszta) jest odrzucana:
16 / 6 = 2
Następnie pomnóż wynik powyższego dzielenia ( 2
) przez nasz dzielnik ( 6
):
2 * 6 = 12
Na koniec odejmij wynik powyższego mnożenia ( 12
) od naszej dywidendy ( 16
):
16 - 12 = 4
Wynik tego odejmowania, 4
The pozostała , jest taki sam wynik naszego modułu powyżej!
16 // 6 >>> 2
i16 / 6 >>> 2.6666666666666665
Może przykład z zegarem pomoże ci zrozumieć modulo.
Znanym zastosowaniem arytmetyki modularnej jest jej użycie w zegarze 12-godzinnym, w którym dzień jest podzielony na dwa okresy 12-godzinne.
Powiedzmy, że obecnie mamy godzinę: 15:00,
ale można też powiedzieć, że jest godzina piętnasta
Dokładnie to robi modulo:
15 / 12 = 1, remainder 3
Ten przykład można lepiej wyjaśnić na Wikipedii: Artykuł w Wikipedii Modulo
Prosty wzór na obliczenie modułu to: -
[Dividend-{(Dividend/Divisor)*Divisor}]
A więc 27% 16: -
27- {(27/16) * 16}
27- {1 * 16}
Odpowiedź = 11
Uwaga :
Wszystkie obliczenia dotyczą liczb całkowitych. W przypadku ilorazu dziesiętnego część po przecinku ma zostać zignorowana / obcięta.
np .: 27/16 = 1,6875 należy przyjmować jako 1 w powyższym wzorze. 0.6875 jest ignorowane.
Kompilatory języków komputerowych również traktują liczbę całkowitą z częścią dziesiętną w ten sam sposób (obcinając po przecinku)
Operator modułu pobiera instrukcję dzielenia i zwraca to, co zostało z tego obliczenia, „pozostałe” dane, że tak powiem, takie jak 13/5 = 2. Co oznacza, że pozostały 3 lub pozostałe z tego obliczenia. Czemu? ponieważ 2 * 5 = 10. Zatem 13 - 10 = 3.
Operator modułu wykonuje wszystkie obliczenia za Ciebie, 13% 5 = 3.
Bardzo proste: a % b
definiuje się jako pozostałą część podziału a
przez b
.
Chciałbym dodać jeszcze jedną rzecz:
łatwo jest obliczyć modulo, gdy dywidenda jest większa / większa niż dzielnik
dywidenda = 5 dzielnik = 3
5% 3 = 2
3)5(1
3
-----
2
ale co, jeśli dzielnik jest mniejszy niż dywidenda
dywidenda = 3 dzielnik = 5
3% 5 = 3 ?? w jaki sposób
Dzieje się tak, ponieważ ponieważ 5 nie może bezpośrednio podzielić 3, to modulo będzie tym, czym jest dywidenda
Mam nadzieję, że te proste kroki pomogą:
20 % 3 = 2
20 / 3 = 6
; nie uwzględniaj .6667
- po prostu je zignoruj3 * 6 = 18
20 - 18 = 2
, która jest pozostałą częścią moduloŁatwiej, gdy liczba po przecinku (0.xxx) jest krótka. Następnie wszystko, co musisz zrobić, to pomnożyć tę liczbę przez liczbę po podzieleniu.
Dawny: 32 % 12 = 8
Robisz 32/12=2.666666667
Następnie odrzucasz to 2
i skupiasz się na 0.666666667
0.666666667*12=8
<- To twoja odpowiedź.
(znowu, łatwe tylko wtedy, gdy liczba po przecinku jest krótka)
Powiedzmy, że masz 17 mod 6.
co w sumie 6 da ci najbliżej 17, to będzie 12, ponieważ jeśli przekroczysz 12, będziesz miał 18, czyli więcej niż pytanie o 17 mod 6. Wtedy weźmiesz 12 i minus z 17, co da ci Twoja odpowiedź, w tym przypadku 5.
17 mod 6 = 5
Podział modułu jest dość prosty. Wykorzystuje resztę zamiast ilorazu.
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, ergo 13% 12 = 1.
Pomyśl o module jako o „cyklu”.
Innymi słowy, dla wyrażenia n % 12
wynik będzie zawsze <12.
Oznacza to, że sekwencja dla zestawu 0..100
dla n % 12
to:
{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}
W tym świetle moduł, a także jego zastosowania, stają się znacznie jaśniejsze.
Jedyną ważną rzeczą do zrozumienia jest to, że moduł (oznaczany tutaj przez%, jak w C) jest definiowany przez podział euklidesowy .
Dla dowolnych dwóch (d, q)
liczb całkowitych zawsze obowiązuje :
d = ( d / q ) * q + ( d % q )
Jak widać, wartość d%q
zależy od wartości d/q
. Generalnie dla dodatnich liczb całkowitych d/q
jest obcięte do zera , na przykład 5/2 daje 2, stąd:
5 = (5/2)*2 + (5%2) => 5 = 2*2 + (5%2) => 5%2 = 1
Jednak w przypadku ujemnych liczb całkowitych sytuacja jest mniej jasna i zależy od języka i / lub normy. Na przykład -5/2 może zwrócić -2 (obcięte do zera, jak poprzednio), ale może również zwrócić -3 (z innym językiem).
W pierwszym przypadku:
-5 = (-5/2)*2 + (-5%2) => -5 = -2*2 + (-5%2) => -5%2 = -1
ale w drugim:
-5 = (-5/2)*2 + (-5%2) => -5 = -3*2 + (-5%2) => -5%2 = +1
Jak powiedziano wcześniej, pamiętaj tylko o niezmienniku , którym jest podział euklidesowy .
Dalsze szczegóły:
27% 16 = 11
Możesz to zinterpretować w ten sposób:
16 przechodzi 1 raz w 27 przed przejściem.
16 * 2 = 32.
Można więc powiedzieć, że 16 przypada raz na 27, a reszta to 11.
W rzeczywistości,
16 + 11 = 27
Inny przykład:
20% 3 = 2
Cóż, 3 przechodzi 6 razy w 20 przed przekazaniem.
3 * 6 = 18
Aby dodać do 20 potrzebujemy 2, więc reszta wyrażenia modułu wynosi 2.
To proste, operator modułu (%) zwraca resztę po dzieleniu liczb całkowitych. Weźmy przykład twojego pytania. Jak 27% 16 = 11? Kiedy po prostu podzielisz 27 przez 16, czyli (27/16), resztę otrzymasz jako 11 i dlatego twoja odpowiedź to 11.
Wypisz tabelę zaczynającą się od 0.
{0,1,2,3,4}
Kontynuuj tabelę w rzędach.
{0,1,2,3,4}
{5,6,7,8,9}
{10,11,12,13,14}
Wszystko w pierwszej kolumnie jest wielokrotnością 5. Wszystko w kolumnie 2 jest wielokrotnością 5 z 1 jako resztą. Teraz część abstrakcyjna: Możesz to zapisać (1) jako 1/5 lub jako rozwinięcie dziesiętne. Operator modułu zwraca tylko kolumnę, lub inaczej zwraca resztę z dzielenia długiego. Masz do czynienia z modulo (5). Inny moduł, inny stół. Pomyśl o tabeli haszującej.
Kiedy podzielimy dwie liczby całkowite, otrzymamy równanie, które wygląda następująco:
A / B = Q reszta R
A to dywidenda; B jest dzielnikiem; Q to iloraz, a R to reszta
Czasami interesuje nas tylko to, jaka jest reszta, gdy podzielimy A przez B. W takich przypadkach istnieje operator zwany operatorem modulo (w skrócie mod).
Przykłady
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.
Zobacz artykuł Khan Academy, aby uzyskać więcej informacji.
W informatyce tablica Hash używa operatora Mod do przechowywania elementu, w którym A będzie wartością po haszowaniu, B będzie rozmiarem tabeli, a R jest liczbą szczelin lub kluczem, w który wstawiany jest element.
Aby uzyskać więcej informacji, zobacz Jak działa tabela skrótów
To było dla mnie najlepsze podejście do zrozumienia operatora modułu. Wyjaśnię ci tylko na przykładach.
16 % 3
Kiedy dzielisz te dwie liczby, wynikiem jest reszta. Tak to robię.
16 % 3 = 3 + 3 = 6; 6 + 3 = 9; 9 + 3 = 12; 12 + 3 = 15
Więc to, co zostało do 16, to 1
16 % 3 = 1
Oto jeszcze jeden przykład: 16 % 7 = 7 + 7 = 14
co pozostało do 16? Jest2
16 % 7 = 2
Jeszcze jedno: 24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24
. Więc reszta to zero,24 % 6 = 0