Ten artykuł dotyczy realizacji reszty i arytmetyki modularnej w informatyce. Zobacz też: reszta i arytmetyka modularna w matematyce.
| Język | Operator | Znak ilorazu |
|---|---|---|
| ActionScript | % |
dzielna |
| Ada | mod |
dzielnik |
rem |
dzielna | |
| ASP | Mod |
nieokreślone |
| bash | % |
dzielna |
| C (ISO 1990) | % |
nieokreślone |
| C (ISO 1999) | % |
dzielna |
| C++ | % |
nieokreślone[a] |
| C# | % |
dzielna |
| Cobol | MOD (parametr-1 parametr-2) |
dzielnik |
| CoffeeScript | % |
dzielna |
%% |
dzielnik[1] | |
| ColdFusion | MOD |
dzielna |
| Common Lisp | mod |
dzielnik |
rem |
dzielna | |
| D | % |
dzielna |
| Eiffel | \\ |
dzielna |
| Euphoria | remainder |
dzielna |
| Microsoft Excel, Calc[2] | =MOD() |
dzielnik |
| FileMaker | Mod |
dzielnik |
| Fortran | mod |
dzielna |
modulo |
dzielnik | |
| GML (Game Maker) | mod |
dzielna |
div |
dzielnik | |
| Go | % |
dzielna |
| Haskell | mod |
dzielnik |
rem |
dzielna | |
| 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 |
| Scratch | mod | dzielna |
| SenseTalk | modulo |
dzielnik |
rem |
dzielna | |
| Smalltalk | \\ |
dzielnik |
rem: |
dzielna | |
| Tcl | % |
dzielnik |
| Verilog (2001) | % |
dzielna |
| VHDL | mod |
dzielnik |
rem |
dzielna | |
| Visual Basic | Mod |
dzielna |
Modulo[b] – operacja wyznaczania reszty z dzielenia jednego typu liczbowego przez drugi. W dalszym ciągu napis 👁 {\displaystyle a\ {\bmod {\ }}d=r}
będzie oznaczał, iż 👁 {\displaystyle r}
jest resztą z dzielenia 👁 {\displaystyle a}
przez 👁 {\displaystyle d.}
[3]
Są różne sposoby określania reszty, a komputery i kalkulatory mają różne sposoby przechowywania i reprezentowania liczb, więc wynik 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 liczb całkowitych, a reszta 👁 {\displaystyle r}
jest zwykle ograniczona przez 👁 {\displaystyle 0\leqslant r<|d|}
albo 👁 {\displaystyle -|d|<r\leqslant 0.}
Wybór między dwiema możliwymi resztami zależy od znaku 👁 {\displaystyle a}
lub 👁 {\displaystyle d}
oraz użytego języka programowania. Niektóre języki programowania, jak na przykład C89, nawet nie definiują wyniku jeśli zarówno 👁 {\displaystyle d,}
jak i 👁 {\displaystyle a}
jest ujemne – patrz tabela.
👁 {\displaystyle a}
modulo 0 jest nieokreślone w większości systemów, choć niektóre określają je jako 👁 {\displaystyle a.}
Jeśli definicja jest spójna z algorytmem dzielenia, wtedy 👁 {\displaystyle d=0}
implikuje 👁 {\displaystyle 0\leqslant r<0,}
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 👁 {\displaystyle r}
jest
gdzie 👁 {\displaystyle \lfloor x\rfloor }
oznacza zaokrąglenie w dół liczby 👁 {\displaystyle x.}
Dzielenie modulo jest powszechnie używane przy obliczaniu cyfry kontrolnej w identyfikatorach. W algorytmie Luhna, numerach PESEL, REGON, NIP, numerach dowodów osobistych, paszportów, numerach towarów EAN, numerach banknotów EURO, numerach kont bankowych IBAN, numerach substancji chemicznych CAS, ISBN, ISMN, ISSN, ISTC, EVN-UIC, numerach recept, prawa wykonywania zawodu lekarza, numerach kontenera i wielu innych[4]. Podstawowym celem użycia cyfry lub znaku kontrolnego jest wykrywanie pomyłek przy ręcznym wprowadzaniu numeru do systemu informatycznego. Wszystkie te metody zapewniają wykrycie zamiany pojedynczego znaku oraz w znacznej większości zamiany sąsiednich znaków, tzw. czeskiego błędu.
Uwagi
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ CoffeeScript operators.
- ↑ Funkcje matematyczne - LibreOffice Help [online], help.libreoffice.org [dostęp 2017-11-25] (ang.).
- ↑ Ronald L. Graham, Donald E. Knuth, Oren Patashnik: Matematyka konkretna. PWN, 2001, s. 148-151. ISBN 83-01-12124-6.
- ↑ Weryfikacja cyfry kontrolnej [online], lipiec 2007 [dostęp 2018-10-25].
