Kurz mal Modulo erklärt

Ihr seid keine Mathematiker und fragt euch was soll dieses komische aber anscheinend nützliche Prozentzeichen (%) in manchen Funktionen. Das Ding nennt sich Modulo. Ihr könnt euch jetzt ganz einfach bei Wikipedia die mathematische Erklärung reinziehen oder ich erkläre auch das kurz im Streetstyle for Everybody.

Das Ding ist ziemlich einfach:
Wir gehen mal die Zahlen 5 und 3 durch:

5%1 = 0
5%2 = 1
5%3 = 2
5%4 = 1
5%5 = 0

7%1 = 0
7%2 = 1
7%3 = 1
7%4 = 3
7%5 = 2
7%6 = 1
7%7 = 0

Na, Muster erkannt?

Falls noch nicht löse ich es jetzt anhand der Zahl 7 auf.

7%1 = 0  weil 7 = ((1*7 = 7) + 0) also ist Rest 0
7%2 = 1  weil 7 = ((2*3 = 6) + 1) also ist  Rest 1
7%3 = 1  weil 7 = ((3*2 = 6) + 1) also ist  Rest 1
7%4 = 3  weil 7 = ((4*1 = 4) + 3) also ist  Rest 3
7%5 = 2  weil 7 = ((5*1 = 5) + 2) also ist  Rest 2
7%6 = 1  weil 7 = ((6*1 = 6) + 1) also ist  Rest 1
7%7 = 0  weil 7 = ((7*1 = 7) + 0) also ist  Rest 0

Nun kann man sich in der Programmierung einige Eigenschaft zu nutze machen. Wie zum Beispiel ob die Zahl gerade oder ungerade ist. Dafür setzten wir die Zahl zu Modulo 2 und erhalten bei einer ungerade stets 1 und bei einer gerade immer die 0. Beispiele gefällig:

1%2 = 1 weil ((2*0 = 0) + 1) also ist Rest 1
2%2 = 0 weil ((2*1 = 2) + 0) also ist Rest 0
3%2 = 1 weil ((2*1 = 1) + 1) also ist Rest 1
4%2 = 0 weil ((2*2 = 2) + 0) also ist Rest 0
5%2 = 1 weil ((2*2 = 1) + 1) also ist Rest 1
6%2 = 0 weil ((2*3 = 0) + 0) also ist Rest 0

Oder ein kleines JavaScript Programm:

btn = document.createElement("BUTTON");
btn.innerHTML = "Das Alphabet";
btn.setAttribute("id","klicki-klicki")
document.body.appendChild(btn);

const letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
let letterIndex = 0;

document.getElementById("klicki-klicki").onclick = function() {
	console.log(letters[letterIndex++ % letters.length])
}

In diesem Programm hilft und das Modulo nach Erreichung des letzten Buchstabens wieder bei A anzufangen. Weil letters[23*1 = 23 REST 0]


Leave a Comment

Your email address will not be published. Required fields are marked *

*

*

Empfholende Artikel


Laravel Mailhog Docker

October 20, 2021

Letztens wurde ich gefragt, wie ich Mail bei Laravel teste. Ich meinte ich habe einen SMTP Server den ich nutzen kann. Da meinte er, dass wäre zwar okay aber man könnte sich damit auch eine valide Mailadresse verbrennen. Mit verbrennen meint der Kollege, dass sie global als SPAM Mailadresse angerechnet werden kann. Falls die Tests […]

MySQL über die Console

October 16, 2021

Vielleicht geht es euch ja wie mir. Ständig vergesse ich die MySQL Commands. Schnell kommt es vor, dass man in einer MySQL Docker Instanz etwas an der Datenbank machen muss. In meinem Fall, der mich dazu brachte es ein für alle mal die wichtigsten MySQL Commands niederzuschreiben, war es, dass meine Docker App ständig meinte […]

Docker: Laravel 8 mit PHP 8

October 15, 2021

Moinsen Leute! Laravel 8 mit PHP 8 auf einem nginx mit node 14 laufen lassen. Wer das benötigt, der sollte folgende docker config nutzen. Wer eine andere Node Version braucht, der schaut hier nach welche er braucht und kopiert den Link hier zur geeigneten Nodejs Distribution rein. Und hier die Docker-compose.yml Datei. Lege einen nginx […]

Git Remote Eintrag löschen

October 15, 2021

Ihr habt ein lokales Repository und ein Remote Repository. Das Remote Repository liegt zum Beispiel bei GitHub und ihr wollt es nun aber bei GitLab unterbringen. Wie löscht man jetzt die Remote Config im lokalen Git Projekt Verzeichnis. Falls ihr noch nicht in dem gewünschten Verzeichnis seid, dann aber schnell hin da. Mit git status […]

Docker GUI – Portainer easy und übersichtlich

October 6, 2021

Klar, ich mag die Kommandozeile. Für alle möglichen Aufgaben ist sie mein zuverlässiger Begleiter. So auch im Docker Umfeld. Die Commands sind eigentlich einfach aber man vergisst schnell wieder einiges und muss dann im Netz Nachschlagen. Vielleicht geht es euch ja genau so? Und für Docker gibt es eine freie und wirklich gute GUI. Sie […]

Tailwind Purge unter npm run dev laufen lassen

August 28, 2021

Einer der Hauptgründe warum ich von Bootstrap auf TaiklwindCSS umgestiegen bin, ist der realisierte Traum von relative kleinen CSS Dateien. Statt ein ganzes CSS Framework immer und wieder zu laden, kann man mit TailwindCSS nur den wirklich im Code benötigten Style generieren lassen. Also eine 100% Effizienz, was bedeutet wir sparen Ressourcen. Und zwar Strom […]