diff --git a/20240411/ad-20240411.txt b/20240411/ad-20240411.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ab63d15a6772409c658c383f8bee41a1c310029a
--- /dev/null
+++ b/20240411/ad-20240411.txt
@@ -0,0 +1,90 @@
+Langzahlarithmetik: Input/Output, 11.04.2024, 13:56:17
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+geg.: lange Zahl zu einer Zweierpotenz-Basis, z.B. 2³²
+Problem: Ausgabe als Dezimalzahl
+
+Lösung für kleine Zahlen:
+Was ist 0xdeadbeef dezimal?
+(= 1101 1110 1010 1101 1011 1110 1110 1111 binär)
+
+binär:
+ 1 + 2 + 4 + 8 
+
+hexadezimal:
+ 13 * 16^7 + 14 * 16^6 + ... + 15 * 16^0
+
+--> Dann brauchen wir zusätzlich auch eine Dezimal-Langzahlarithmetik.
+    --> Problem gelöst, verbraucht aber zusätzlichen Speicherplatz.
+
+Lösung ohne Umspeichern:
+  Zahl % 10 --> dezimale Einerziffer
+  Zahl /= 10
+  Zahl % 10 --> dezimale Zehnerziffer
+  Zahl /= 10
+  Zahl % 10 --> dezimale Hunderterziffer
+  ...
+    --> Problem gelöst, verbraucht aber zusätzliche Rechenzeit.
+
+Verwendung der Basis 2³² hat den Vorteil, daß der Rechner
+dafür Assembler-Befehle kennt.
+
+Binäre Exponentiation, 11.04.2024, 14:10:04
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+x^18 möglichst effizient berechnen:
+
+ - 18 binär notieren 10010
+
+ - von rechts nach links durchgehen, x jeweils quadrieren
+
+   Bit 0 (ganz rechts): 0            x
+   Bit 1:               1            x^2
+   Bit 2:               0            x^4
+   Bit 3:               0            x^8
+   Bit 4:               1            x^16
+
+ - Dort, wo die Einsen stehen, multiplizieren.
+   (Mit 1 anfangen.)
+
+                      1 * x^2 * x^16 = x^18
+
+--> Effizienz der binären Exponentiation von x^n: O(_was_ von n?)
+    
+    O(log n)
+
+    Die Schleife geht über die Binärziffern von n (= 18).
+    Deren Anzahl ist log_2 (n).
+
+ - Zum Vergleich: die Schleife
+
+     int e = 1;
+     for (int i = 0; i < 18; i++)
+       e *= x;
+
+   berechnet ebenfalls x^18. Effizienz: O(n)
+
+   Die Schleife geht über die Zahl n selbst.
+
+Aufgabe: RSA effizienter [als im Praktikum], 11.04.2024, 14:26:38
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Implementieren Sie RSA wie in Hardwarenahe Programmierung, Praktikumsversuch 1,
+aber: Die Effizienz der Benutzung (Schlüsselerzeugung, Verschlüsseln, Entschlüsseln)
+soll O((log n)^2) sein. [Im HP-Praktikum genügte O(n).]
+
+Hinweis 1: Verwenden Sie
+ - den Datentyp uint64_t,
+ - binäre Exponentiation für die Ver- und Entschlüsselung,
+ - den erweiterten euklidischen Algorithmus für die Schlüsselerzeugung.
+
+Hinweis 2: Es sollte möglich sein, die Primzahlen so groß zu machen, daß ihr
+Produkt den verwendeten Datentyp (uint64_t) _fast_ ausfüllt. Spätestens dann
+sollte der Unterschied in der Rechengeschwindigkeit auch ohne Messung deutlich
+spürbar sein.
+
+Hinweis 3: Es ist weiterhin wichtig, nach jeder Multiplikation mit x
+(einschließlich Quadrieren), modulo zu rechnen.
+
+Vergleichen Sie die Zeitmessungen der alten Variante (O(n)) und der neuen (O(log(n)^2)).
+
+Auch Zwischenergebnisse bereits melden; dann können wir darüber sprechen.
+(Auch Fragen dürfen natürlich gestellt werden.;-)
+