Naprawdę nie rozumiem, jak działa podział modułu. Kalkulowałem 27 % 16
i skończyłem 11
i nie rozumiem dlaczego.
Nie mogę znaleźć wyjaśnienia w terminach laika w Internecie. Czy ktoś może rozwinąć na bardzo wysokim poziomie, co się tutaj dzieje?
Naprawdę nie rozumiem, jak działa podział modułu. Kalkulowałem 27 % 16
i skończyłem 11
i nie rozumiem dlaczego.
Nie mogę znaleźć wyjaśnienia w terminach laika w Internecie. Czy ktoś może rozwinąć na bardzo wysokim poziomie, co się tutaj dzieje?
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:
Funkcja modułu wygląda następująco:
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:
Następnie pomnóż wynik powyższego dzielenia (
2
) przez nasz dzielnik (6
):Na koniec odejmij wynik powyższego mnożenia (
12
) od naszej dywidendy (16
):Wynik tego odejmowania,
4
The pozostała , jest taki sam wynik naszego modułu powyżej!źródło
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:
Ten przykład można lepiej wyjaśnić na Wikipedii: Artykuł w Wikipedii Modulo
źródło
Prosty wzór na obliczenie modułu to: -
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)
źródło
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.
źródło
dzielenie modułu jest po prostu takie: podziel dwie liczby i zwróć tylko resztę
27/16 = 1 z 11 pozostało, zatem 27% 16 = 11
tak samo 43/16 = 2 z 11 pozostało, więc 43% 16 = 11 też
źródło
Bardzo proste:
a % b
definiuje się jako pozostałą część podziałua
przezb
.Więcej przykładów znajdziesz w artykule na Wikipedii .
źródło
Chciałbym dodać jeszcze jedną rzecz:
łatwo jest obliczyć modulo, gdy dywidenda jest większa / większa niż dzielnik
dywidenda = 5 dzielnik = 3
ale co, jeśli dzielnik jest mniejszy niż dywidenda
dywidenda = 3 dzielnik = 5
Dzieje się tak, ponieważ ponieważ 5 nie może bezpośrednio podzielić 3, to modulo będzie tym, czym jest dywidenda
źródło
Mam nadzieję, że te proste kroki pomogą:
20 / 3 = 6
; nie uwzględniaj.6667
- po prostu je zignoruj3 * 6 = 18
20 - 18 = 2
, która jest pozostałą częścią moduloźródło
Ł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 to2
i skupiasz się na0.666666667
0.666666667*12=8
<- To twoja odpowiedź.(znowu, łatwe tylko wtedy, gdy liczba po przecinku jest krótka)
źródło
Dzielenie modułu daje resztę z dzielenia, a nie iloraz.
źródło
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
źródło
Podział modułu jest dość prosty. Wykorzystuje resztę zamiast ilorazu.
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
dlan % 12
to:W tym świetle moduł, a także jego zastosowania, stają się znacznie jaśniejsze.
źródło
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 :Jak widać, wartość
d%q
zależy od wartościd/q
. Generalnie dla dodatnich liczb całkowitychd/q
jest obcięte do zera , na przykład 5/2 daje 2, stąd: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:
ale w drugim:
Jak powiedziano wcześniej, pamiętaj tylko o niezmienniku , którym jest podział euklidesowy .
Dalsze szczegóły:
źródło
Możesz to zinterpretować w ten sposób:
16 przechodzi 1 raz w 27 przed przejściem.
Można więc powiedzieć, że 16 przypada raz na 27, a reszta to 11.
W rzeczywistości,
Inny przykład:
Cóż, 3 przechodzi 6 razy w 20 przed przekazaniem.
Aby dodać do 20 potrzebujemy 2, więc reszta wyrażenia modułu wynosi 2.
źródło
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.
źródło
Wypisz tabelę zaczynającą się od 0.
Kontynuuj tabelę w rzędach.
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.
źródło
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
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
źródło
To było dla mnie najlepsze podejście do zrozumienia operatora modułu. Wyjaśnię ci tylko na przykładach.
Kiedy dzielisz te dwie liczby, wynikiem jest reszta. Tak to robię.
Więc to, co zostało do 16, to 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
źródło