Modulo

Ten artykuł dotyczy realizacji reszty i arytmetyki modularnej w informatyce. Zobacz też: reszta i arytmetyka modularna w matematyce.
Modulo w różnych językach programowania i programach
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 a   mod   d = r {\displaystyle a\ {\bmod {\ }}d=r} będzie oznaczał, iż r {\displaystyle r} jest resztą z dzielenia a {\displaystyle a} przez d . {\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 r {\displaystyle r} jest zwykle ograniczona przez 0 r < | d | {\displaystyle 0\leqslant r<|d|} albo | d | < r 0. {\displaystyle -|d|<r\leqslant 0.} Wybór między dwiema możliwymi resztami zależy od znaku a {\displaystyle a} lub d {\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 d , {\displaystyle d,} jak i a {\displaystyle a} jest ujemne – patrz tabela.

a {\displaystyle a} modulo 0 jest nieokreślone w większości systemów, choć niektóre określają je jako a . {\displaystyle a.} Jeśli definicja jest spójna z algorytmem dzielenia, wtedy d = 0 {\displaystyle d=0} implikuje 0 r < 0 , {\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 r {\displaystyle r} jest

r = a d a d , {\displaystyle r=a-d\left\lfloor {\frac {a}{d}}\right\rfloor ,}

gdzie x {\displaystyle \lfloor x\rfloor } oznacza zaokrąglenie w dół liczby x . {\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

  1. według 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”.
  2. Etym. w moduł.

Przypisy

  1. CoffeeScript operators.
  2. Funkcje matematyczne - LibreOffice Help [online], help.libreoffice.org [dostęp 2017-11-25]  (ang.).
  3. Ronald L. Graham, Donald E. Knuth, Oren Patashnik: Matematyka konkretna. PWN, 2001, s. 148-151. ISBN 83-01-12124-6.
  4. Weryfikacja cyfry kontrolnej [online], lipiec 2007 [dostęp 2018-10-25] .
  • p
  • d
  • e
podstawowe
typy liczb
działania
dwuargumentowe
jednoargumentowe
ułamki
symbole
liczb
działań
relacji
inne
reguły zapisu
prawa działań
narzędzia
liczydła
kalkulatory
inne
powiązane pojęcia
rozszerzenia