From cbdc1b4ba4c50437d8e28c0f646bc6ac4e58d44c Mon Sep 17 00:00:00 2001
From: Philip Kaludercic <philip.kaludercic@fau.de>
Date: Mon, 22 Jan 2024 20:52:19 +0100
Subject: [PATCH] Correct answer to the paging question

---
 ws15.q | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/ws15.q b/ws15.q
index caffc29..df4984f 100644
--- a/ws15.q
+++ b/ws15.q
@@ -202,25 +202,27 @@
 | einstufiger Seitennummerierung und einer Seitengröße von 2048 Bytes zu
 | folgender logischer Adresse: `0xba1d`
 
-+ Seitennummer `0xb`, Versatz `0xa1d`.
+- Seitennummer `0xb`, Versatz `0xa1d`.
++ Seitennummer `0x17`, Versatz `0x21d`.
+  Ja, weil
 
-  In binär:
+      (0xba1d &  (2048-1))       = 0x21d
+      (0xba1d & ~(2048-1)) >> 11 = 0x17
 
-  - `0xba1d` ist  0b1011101000011101
-  - `0xb` ist  `0b1011`
-  - `0xa1d` ist `0b101000011101`
+  Die Idee hier ist, dass man mit einer Seitengröße von 2048 Byte mit
+  11 Bit addressieren kann.  Die ersten 11 Byte von
 
-  Wenn man die ersten 11 bit abschneidet (weil 2^11 = 2048), sieht man
-  wie die Addresse zusammengesetzt ist:
+      0b1011101000011101 = 0xba1d
 
-  ~~~
-  1011101000011101  <- Logische Addresse
+  sind
+
+           0b01000011101 = 0x21d
+
+  und damit bleiben für die Page nummer nur noch
+
+      0b10111            = 0x17
 
-  1011              <- Page Nummer
-      101000011101  <- Page Offset
-  ~~~
 
-- Seitennummer `0x17`, Versatz `0x21d`.
 - Seitennummer `0xba`, Versatz `0x1d`.
 - Seitennummer `0x2e`, Versatz `0x21d`.
 .
-- 
GitLab