Modulo

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Ujednoznacznienie 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
Język Operator Znak ilorazu
ActionScript % Dzielna
Ada mod Dzielnik
rem Dzielna
ASP Mod Nieokreślone
BasiEgaXorz % Dzielna
C (ISO 1990) % Nieokreślone
C (ISO 1999) % Dzielna
C++ % Nieokreślone[1]
C# % Dzielna
Cobol MOD (parametr-1 parametr-2) Dzielnik
ColdFusion MOD Dzielna
Common Lisp mod Dzielnik
rem Dzielna
Eiffel \\ Dzielna
Microsoft Excel, Calc[2] =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

Modulo – w informatyce operacja wyznaczania reszty z dzielenia jednego typu liczbowego przez drugi. W dalszym ciągu napis a\ \bmod\ d = r będzie oznaczał, iż r jest resztą z dzielenia a przez d.

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 liczb całkowitych, a reszta r jest zwykle ograniczona przez 0 \leqslant r < |d| albo -|d| < r \leqslant 0. Wybór między dwiema możliwymi resztami zależy od znaku a lub 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 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 d = 0 implikuje  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 jest

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

gdzie \lfloor x\rfloor oznacza podłogę x.

Przypisy

  1. 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 ".
  2. https://help.libreoffice.org/Calc/Mathematical_Functions/pl#MOD