Operacja modulo
| Ten artykuł wymaga dopracowania zgodnie z zaleceniami edycyjnymi. Należy w nim poprawić: artykuł opisuje to działanie wyłącznie z punktu widzenia informatyki. Brakuje algebry.. Po wyeliminowaniu wskazanych powyżej niedoskonałości prosimy usunąć szablon {{Dopracować}} z kodu tego artykułu. |
Operacja modulo to w informatyce znajdowanie reszty z dzielenia jednej liczby przez drugą.
Dla danych dwóch liczb a (dzielna) i n (dzielnik), a modulo n (w skrócie a mod n) jest resztą z dzielenia a przez n. Na przykład wyrażenie "7 mod 3" daje 1, podczas gdy "9 mod 3" daje 0. Wprawdzie zazwyczaj operacja modulo jest wykonywana dla a i n całkowitych, to wiele systemów komoputerowych pozwala na użycie innych typów numerycznych jako operandów.
Zobacz artykuł arytmetyka modularna, który opisuje starszą konwencję stosowaną w teorii liczb.
| Język | Operator | Wynik ma ten sam znak co |
|---|---|---|
| ActionScript | % | Dzielna |
| Ada | mod | Dzielnik |
| rem | Dzielna | |
| ASP | Mod | Nieokreślone |
| C (ISO 1990) | % | Nieokreślone |
| C (ISO 1999) | % | Dzielna |
| C++ | % | Nieokreślone[1] |
| C# | % | Dzielna |
| Cobol | MOD (parameter-1 parameter-2) | Dzielnik |
| ColdFusion | MOD | Dzielna |
| Common Lisp | mod | Dzielnik |
| rem | Dzielna | |
| Eiffel | \\ | Dzielna |
| Microsoft Excel | =MOD() | Dzielnik |
| Euphoria | remainder | Dzielna |
| FileMaker | Mod | Dzielnik |
| Fortran | mod | Dzielna |
| modulo | Dzielnik | |
| GML (Game Maker) | mod | Dzielna |
| div | Dzielnik | |
| J | |~ | Dzielnik |
| Java | % | Dzielna |
| JavaScript | % | Dzielna |
| Lua | % | Dzielnik |
| MathCad | mod(x,y) | Dzielnik |
| Mathematica | Mod | Dzielnik |
| MATLAB | mod | Dzielnik |
| rem | Dzielna | |
| MySQL | MOD % |
Dzielna |
| Objective Caml | mod | Nieokreślone |
| Occam | \ | Dzielna |
| Pascal (Delphi) | mod | Dzielna |
| Perl | % | Dzielnik |
| PHP | % | Dzielna |
| PL/I | mod | Dzielnik (ANSI PL/I) |
| Prolog (ISO 1995) | mod | Dzielnik |
| rem | Dzielna | |
| Python | % | Dzielnik |
| QBasic | MOD | Dzielna |
| R | %% | Dzielnik |
| RPG | %REM | Dzielna |
| Ruby | % | Dzielnik |
| Scheme | modulo | Dzielnik |
| SenseTalk | modulo | Dzielnik |
| rem | Dzielna | |
| Tcl | % | Dzielnik |
| Verilog (2001) | % | Dzielna |
| VHDL | mod | Dzielnik |
| rem | Dzielna | |
| Visual Basic | Mod | Dzielna |
Są różne sposoby określania reszty, a komputery i kalkulatory mają różne sposoby przechowywania i reprezentowania liczb, więc to co dokładnie jest wynikiem operacji modulo zależy od języka programowania i/lub sprzętu.
W niemal każdym systemie komputerowym współczynnik wynikający z dzielenia jest ograniczany do zbioru liczba całkowitych, a reszta r jest zwykle ograniczona przez
albo
. Wybór między dwiema możliwymi resztami zależy od znaku a lub n oraz użytego języka programowania. Niektóre języki programowania, jak na przykład C89, nawet nie definiują wyniku jeśli zarówno n jak i a jest ujemne. Zobacz tabelę.
a modulo 0 jest nieokreślone w większości systemów, choć niektóre określają je jako a. Jeśli definicja jest spójna z algorytmem dzielenia, wtedy n = 0 implikuje
, co jest sprzeczne (tzn. zwykła reszta w tym wypadku nie istnieje).
Reszta może być wyznaczana równaniami, które korzystają z innych funkcji. Jednym z takich użytecznych równań wyznaczania reszty r jest
gdzie
jest podłogą x.
Przypisy
- ↑ wg ISO/IEC 14882:2003 "(...) operator binarny % wyznacza resztę z dzielenia pierwszego wyrażenia przez drugie (...) Jeśli oba operandy są nieujemne to reszta jest nieujemna; w przeciwnym razie znak reszty jest zależny od implementacji ".
