2013-07-08 11 views
19

Rozumiem operatora modalne w odniesieniu do następującego wyrażenia:Zrozumienie moduł operatora%

7 % 5 

ten wróci 2 ze względu na fakt, że 5 idzie do 7 raz, a potem daje 2, która pozostała na jednak mój zamieszanie przychodzi kiedy odwrócić to stwierdzenie w brzmieniu:

5 % 7 

To daje mi wartość 5, co mnie niepokoi nieznacznie. Chociaż cała siódemka nie mieści się w 5, część z nich to robi, więc dlaczego nie ma ani reszty, ani reszty dodatnich lub ujemnych 2?

Jeśli oblicza wartość 5 na podstawie faktu, że 7 w ogóle nie pasuje do 5, dlaczego pozostała część to nie 7 zamiast 5?

Czuję, że jest coś, czego mi tu brakuje w moim rozumieniu operatora modulus.

+2

Moduł jest 'wartość absolutna'. Masz na myśli "modulo", które ma związek z resztą. Szkoda, że ​​słowa są tak podobne, jak wyrzucają wielu ludzi. – Discordanian

+0

Miałem problem z liczbami dziesiętnymi i liczbami ujemnymi i znalazłem tutaj moją odpowiedź: https://stackoverflow.com/questions/48662225/understanding-something-more- about-tod-modulo-modulus-and-modulo-modulus-w –

Odpowiedz

35

(To wyjaśnienie jest tylko dla liczb dodatnich, ponieważ zależy od języka inaczej)

Moduł daje resztę z dzielenia jednej liczby przez drugą. Jeśli zapytasz 8-letnie dziecko, co 5 podzielone przez 7 daje (8, ponieważ w większości nie znają liczb dziesiętnych), odpowie: 0, ale pozostaje 5.

Możesz również użyć tego równania:

a % b = a - floor(a/b) * b 

floor(a/b) reprezentuje liczbę razy można podzielić a przez b (patrz przykład na ilustracji poniżej). I floor(a/b) * b kwotę, która została pomyślnie udostępniona w całości. Co oznacza, że ​​całkowita wartość minus dzielona jest równa pozostałej części podziału. Teraz można korzystać z tego równania:

5 % 7 = 5 - floor(5/7) * 7 = 5 

Euclidian Division

Powiedział, że twoja intuicja, że ​​to może być -2, a nie 5. Faktycznie, w arytmetyce modularnej, -2 = 5 (mod 7) ponieważ istnieje k takie, że w Z 7k - 2 = 5.

Być może nie nauczyłeś się arytmetyki modularnej, ale prawdopodobnie używasz kątów i wiesz, że -90 ° to to samo, co 270 °, ponieważ jest modulo 360. Jest podobnie, to się pakuje! Więc weź okrąg i powiedz, że jego obwód to 7. Potem czytaj gdzie jest 5. A jeśli spróbujesz z 10, powinno być na poziomie 3, ponieważ 10 % 7 to 3.

0

Operator modułowy daje wynik w "systemie zredukowanej pozostałości". Na przykład dla mod 5 liczonych jest 5 liczb całkowitych: 0,1,2,3,4. W rzeczywistości 19 = 12 = 5 = -2 = -9 (mod 7). Główną różnicą, że odpowiedź jest udzielana przez języki programowania przez "system redukcji pozostałości".

0

nowatorski sposób, aby dowiedzieć się pozostałą podano poniżej

oświadczenie: Reszta jest zawsze stała

ex : 26 divided by 7 gives R : 5 

ten temat można znaleźć na zewnątrz łatwo znaleźć numer, który całkowicie dzielącą 26, która jest bliżej dzielnik i przy różnicy obu

13 is the next number after 7 that completely divides 26 because after 7 comes 8, 9 , 

10, 11, 12 where none of them divides 26 completely and give remainder 0. 
So 13 is the closest number to 7 which divides to give Remainder 0. 
now take the difference (13 ~ 7) = 5 which is the Remainder . 

note : for this to work divisor should be reduced to its simplest form ex: if 14 
is the divisor ..7 has to be chosen to find the closest number dividing the dividend. 
3

modułu jest systemem pozostałości.

zatem 7% 5 = 2.

5% 7 = 5

3% 7 = 3

2% 7 = 2

1% 7 = 1

W przypadku użycia wewnątrz funkcji do ustalenia indeksu tablicy. Czy to bezpieczne programowanie? To jest inne pytanie. Zgaduję.

1

Etap 1: 5/7 = 0,71

Etap 2: Należy lewą stronę po przecinku, więc wziąć 0 od 0,71 i mnożąc przez 7 0 * 7 = 0;

Krok nr: 5-0 = 5; Dlatego 5/7 = 5

2

Jak inni wskazywali moduł jest oparty na systemie pozostałym.

Myślę, że łatwiejszy do myślenia o module jest to, co pozostaje po dywidendzie (liczba do podziału) została całkowicie podzielona przez dzielnik. Jeśli więc myślimy o 5% 7, gdy podzielimy 5 na 7, 7 może przejść do 5 tylko 0 razy i kiedy odejmiecie 0 (7 * 0) od 5 (tak jak uczyliśmy się w szkole podstawowej), to pozostali będzie 5 (mod). Zobacz ilustrację poniżej.

0 
    ______ 
7) 5  
__-0____ 
    5 

z tą samą logiką -5 mod 7 będzie -5 (tylko 0 7S może wchodzić -5 -5-0 * 7 = -5). Z tym samym tokenem -5 mod -7 będzie również -5. kilku bardziej interesujące przypadki:

5 modyfikacji (-3) = 2, to znaczy 5 - (-3 * -1)

(-5) mod (-3) = -2 tj -5 - (-3 * 1) = -5 + 3

0

pozwala umieścić go w ten sposób:
faktycznie Moduł operator robi ten sam podział, ale nie dbają o odpowiedź, to dba o przypomnienie, na przykład, jeśli Podziel 7 do 5,
, więc pozwolę sobie przeprowadzić prosty przykład:
myślę 5 to blok, to na przykład będziemy mieć 3 bloki w 15 (z Nic Po lewej), ale kiedy ten loginc przychodzi do tego rodzaju liczb {1,3,5,7,9,11, ...}, tutaj jest, gdzie wychodzi Modulus , więc weź logikę, o której mówiłem wcześniej i zastosuj ją dla 7, więc odpowiedź będzie taka, że ​​mamy 1 blok 5 w 7 => z 2 przypomnieniami w naszej ręce! to jest moduł!
ale pytałeś o 5% 7, prawda?
więc weź logikę, którą powiedziałem, ile 7 bloków mamy w 5 ????
więc moduł zwraca 0 ...
że jest to ...