„Modulo“ – Versionsunterschied
Erscheinungsbild
[gesichtete Version] | [gesichtete Version] |
Inhalt gelöscht Inhalt hinzugefügt
Avron (Diskussion | Beiträge) |
Zeilen getauscht. 10 Interwiki-Links nach Wikidata (d:Q1799665) migriert. |
||
(11 dazwischenliegende Versionen von 9 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
#WEITERLEITUNG [[Division mit Rest#Modulo]] |
|||
{{Wikidata-Weiterleitung|Q1799665}} |
|||
[[Kategorie:Division (Mathematik)]] |
|||
'''Modulo''' [{{IPA|ˈmoːduloː}}] (lat. Modulus, Kasus Ablativ: "durch Maß" oder auch "mit Maß", somit Mehrzahl Moduli), mathematisches Formelzeichen '''mod''', in vielen Programmiersprachen durch '''%''' wiedergegeben, ist eine mathematische Funktion, die den [[Division mit Rest|Rest aus der Division]] zweier [[Ganze Zahl|ganzer Zahlen]] angibt. Eine weiterführende Modulorechnung existiert auch für Polynome, die auf den Mengen sog. [[Galoiskörper]] definiert sind. Der Rest ist in dem Fall ein Polynom. |
|||
: Beispiel: 7 mod 2 = 1, ''Sprechweise: „Sieben modulo zwei gleich eins.“'' Denn 7 : 2 = 3, Rest 1 (2 · 3 + 1 = 7). Ebenso ist beispielsweise 7 mod 3 = 1. |
|||
== Varianten der Modulo-Funktion == |
|||
Es gibt zwei Varianten der Modulo-Funktion, die für negative Argumente unterschiedliche Ergebnisse liefern: |
|||
* „Mathematische Variante“: |
|||
:: <math>(a\;\bmod\;m)= a - \left \lfloor \frac{a}{m} \right \rfloor \cdot m</math> |
|||
: Die [[Gaußklammer]] <math>\lfloor \cdot \rfloor</math> bezeichnet die größte ganze Zahl, die kleiner oder gleich der Zahl in der Gaußklammer ist, also ohne den Rest der Division <math>a\,/\,m</math>. Für diese Variante gilt stets |
|||
:: <math>(a + km)\;\bmod\;m = a\;\bmod\;m\quad(k\in\mathbb Z),</math> |
|||
: aber im Allgemeinen ist |
|||
:: <math> (-a)\;\bmod\;m \ne-(a\;\bmod\;m),</math> z. B. <math>(-2)\;\bmod\;3=1\ne-2=-(2\;\bmod\;3)</math>. |
|||
: Ist <math>m</math> positiv, so ist <math>a\;\bmod\;m\geq0</math> für alle <math>a</math>. |
|||
* „Symmetrische Variante“: |
|||
:: <math>(a\;\bmod\;m) = a - m\cdot (a\,\operatorname{div}\,m);</math> |
|||
: dabei bezeichnet <math>a\,\operatorname{div}\,m</math> den zur Null hin gerundeten Quotienten <math>a\,/\,m</math>. Für diese Variante gilt |
|||
:: <math>(-a)\;\bmod\;m = -(a\;\bmod\;m)</math>, |
|||
: aber im Allgemeinen |
|||
:: <math>(a + km)\;\bmod\;m\ne a\;\bmod\;m</math>, z. B. <math>(1 - 3)\;\bmod 3=(-2)\;\bmod\;3=-2\ne 1=1\;\bmod\;3</math>. |
|||
: <math>a\;\bmod\;m</math> hat stets dasselbe Vorzeichen wie <math>a</math>, oder es gilt <math>a\;\bmod\;m = 0</math>. |
|||
In Programmiersprachen ist üblicherweise die zweite Variante implementiert. Gilt <math>a\geq 0</math> und <math>m>0</math>, so ergeben beide Varianten dasselbe Ergebnis. |
|||
'''Beispiele:''' |
|||
* ''17 mod 3 = 2'', da 17 = 5×3 + 2 („drei passt fünf mal in 17 und es bleiben zwei übrig“ – der Rest ist also zwei) |
|||
* ''2 mod 3 = 2'', da 2 = 0×3 + 2 |
|||
* ''3 mod 3 = 0'', da 3 = 1×3 + 0 |
|||
Wenn <math>(a\;\bmod\;n) = (b\;\bmod\;n)</math>, dann folgt nicht daraus, dass <math>a = b</math> ist, sondern nur, dass sich <math>a</math> und <math>b</math> um ein ganzzahliges Vielfaches von <math>n</math> unterscheiden, also: <math>a = b + (k \cdot n)\ \text{mit}\ k \in \mathbb{Z}</math> Eine derartige Gleichung kann auch einfacher mit Hilfe der in der [[Zahlentheorie]] verbreiteten [[Kongruenz (Zahlentheorie)|Kongruenzrelation]] geschrieben werden. |
|||
== Anwendung == |
|||
'''Programmierung:''' |
|||
Modulo wird in der Programmierung relativ häufig verwendet. Mit ''mod'' kann geprüft werden, ob eine Zahl gerade ist: if ( (x mod 2) == 0), dann ist x gerade. Modulo kann man immer benutzen, wenn man alle X Schleifendurchläufe einen speziellen Programmcode ausführen will. Auch bei vielen Berechnungen und Algorithmen ist er sinnvoll einsetzbar. Allgemein kann man mit mod prüfen, ob eine Zahl durch eine andere genau teilbar ist, dann ist der Modulo nämlich Null. Andersrum muss man in der Programmierung oft auf ganze Vielfache von einer Zahl ergänzen (z. B. 4 Bytes) und bekommt durch den Modulo heraus, wie viele „[[Pad-Byte]]s“ noch fehlen. |
|||
: Beispiel: Man programmiert eine Uhr und hat die Zeit als Sekundenwert seit 0 Uhr gegeben. Dann kann man den Sekundenwert Mod 3600 berechnen. Ist dieser gleich 0, so weiß man, dass eine volle Stunde angefangen hat. Diese Information kann man nutzen, um z. B. ein akustisches Signal (Gong zur vollen Stunde) auszulösen. Mit der Berechnung Sekundenwert Mod 60 erhält man die Sekunde in der aktuellen Minute, die oftmals von Digitaluhren als letzte zwei Stellen anzeigt werden. |
|||
'''Weitere Anwendungen:''' |
|||
* Berechnung der Prüfziffer der [[Internationale Standardbuchnummer#Formeln zur Berechnung der Prüfziffer|Internationalen Standardbuchnummer]] |
|||
* Prüfsummen-Formel [[Luhn-Algorithmus]] zur Bestätigung von Identifikationsnummern wie Kreditkartennummern und kanadische Sozialversicherungsnummern |
|||
* Kalenderberechnung (z. B. die relativ komplizierte Berechnung des [[Gaußsche Osterformel|Osterdatum]]s) |
|||
* Bei der [[International Bank Account Number]] (IBAN) |
|||
* In der [[Kryptografie]], z. B. beim [[Diffie-Hellman-Schlüsselaustausch]] |
|||
== Literatur == |
|||
* K. Reiss, G. Schmieder: ''Basiswissen Zahlentheorie – Eine Einführung in Zahlen und Zahlenbereiche.'' Springer-Verlag, Berlin, Heidelberg, New York, ISBN 3-540-21248-5. |
|||
== Siehe auch == |
|||
* [[Kongruenz (Zahlentheorie)]] |
|||
* [[Hash-Funktion]] und die dort genannten Verfahren |
|||
* [[Kleiner fermatscher Satz]] |
|||
* [[Satz von Euler]] |
|||
* [[Dualsystem#vom Dezimalsystem ins Dualsystem|Dualsystem]] |
|||
* [[Endlicher Körper|Galoiskörper]] |
|||
== Weblinks == |
|||
* [http://mathematik.thomasgramm.com/modulo.html Modulo online berechnen] |
|||
* [http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/java_modulo_de Modulo in Java] |
|||
* [http://openbook.galileocomputing.de/javainsel8/javainsel_02_005.htm Java ist auch eine Insel: Modulo in Java]] |
|||
[[Kategorie:Arithmetik]] |
|||
[[cs:Zbytek po dělení]] |
|||
[[da:Modulo]] |
|||
[[en:Modulo operation]] |
|||
[[fr:Modulo (informatique)]] |
|||
[[id:Operasi modulus]] |
|||
[[is:Módular]] |
|||
[[no:Modulo]] |
|||
[[pl:Operacja modulo]] |
|||
[[ro:Modulo]] |
|||
[[ru:Деление с остатком]] |
|||
[[sl:Modulo]] |
|||
[[zh:模除]] |
Aktuelle Version vom 10. Juli 2016, 23:18 Uhr
Weiterleitung nach:
- Wikidata: Modulo (Q1799665)