stationeers.de Mod-Werkstatt · Dominik1199
EN Anmelden
  1. Start
  2. IC10-Akademie
  3. Tag 358

Tag 358 von 365 · Experte · Monat 12: Meisterstücke

Rückblick: Bits und Daten

Rückblick Bits und Daten: and, or, xor, not, Schieben, Rotieren, ext und ins noch einmal im Überblick – und ein Statuswort, das als Klartext auf der Anzeige landet.

Lektion 20 Min. Woche 52

Das lernst du heute

  • Bitoperationen wiederholen
  • Packen und Text kombinieren
  • Lücken erkennen

Die letzte Woche des Jahres schaut zurück. Drei Rückblicke fassen die Experten-Stufe zusammen, jeder mit einer Übung, die zwei Themen verbindet. Heute: Bits und Daten.

Die Werkzeuge

BefehlmachtFalle
andprüft und löscht Bitsarbeitet auf Ganzzahlen, Nachkommastellen fallen weg
orsetzt Bits–
xorschaltet Bits um–
notdreht alle Bitsnot 0 ist −1
sll/sla, srl, sraschiebennur sra behält das Vorzeichen
rol, rorrotiereninnerhalb von 54 Bit, nicht 64
ext, insFeld holen, Feld setzenhöchstens 53 Bit lang
STR("…")Text in eine Zahlhöchstens 6 ASCII-Zeichen
HASH("…")Name in eine ZahlCRC32 als vorzeichenbehaftete 32-Bit-Zahl

Darunter liegt immer dieselbe Tatsache: Ein Register ist eine Kommazahl mit 53 Bit Genauigkeit. Bitbefehle wandeln sie in eine Ganzzahl und zurück.

Packen und Text verbinden

Ein Statuswort wie das der Lüftung aus Tag 345 ist für Chips ideal und für Menschen unlesbar. „35“ sagt dir nichts. „SPUELN“ schon. Der Chip packt das Wort mit ext aus und wählt den passenden Text:

ext anf wort 4 2                   # Bits 4-5: Anforderung
move text T_AUS
seq tmp anf 1
select text tmp T_NORMAL text
sbn ANZ HASH("Lueftung") Mode TEXTMODUS
sbn ANZ HASH("Lueftung") Setting text    # zeigt NORMAL statt einer Zahl

Die Texte stehen als define mit STR("…"). Der Präprozessor macht daraus beim Laden eine Zahl, und eine Anzeige im Modus DisplayMode.String zeigt sie wieder als Buchstaben.

Lücken erkennen

Geh die Tabelle durch und frag dich bei jeder Zeile: Kann ich ein Beispiel im Kopf rechnen? and %1100 %1010, sra -32 3, ext %1011_0000 4 4 – wenn eines davon hakt, lies den Tag dazu noch einmal. Die Prüfung rechnet genau solche Beispiele.

Achtung

Mehr als sechs Zeichen passen nicht in STR. „SPUELEN“ hat sieben und lädt nicht – deshalb heißt es hier „SPUELN“. Umlaute gehen gar nicht.

Schaubild

Die Registerbank des Chips r0 42 r1 31 r2 10 r3 -2.5 r4 0 r5 0 r6 0 r7 0 r8 0 r9 0 r10 0 r11 0 r12 0 r13 0 r14 0 r15 0 sp = r16 ra = r17 16 freie Register, je eine Zahl sp: Stapelzeiger · ra: Rücksprungadresse
Ein Register, viele Felder: ext holt ein Feld heraus, ins setzt eins ein. Alles über 53 Bit kommt nicht verlustfrei zurück.

Übung

Aufgabe

Zeig das Statuswort „Lueft_Status“ (Format aus Tag 345: Bit 0 Zuluft, Bit 1 Abluft, Bit 2 Fehler, Bits 4–5 Anforderung) als Klartext. Die Anzeige „Lueftung“ steht im Textmodus und zeigt „AUS“, „NORMAL“ oder „SPUELN“ – bei gesetztem Fehlerbit, Anforderung 3 oder fehlendem Speicher „FEHLER“. Die Anzeige „Lueft_Pumpen“ zeigt, wie viele Pumpen laufen, ohne Speicher -1.

Hinweise

Hinweis 1

Fehlender Speicher: snan fehlt wort, dann select wort fehlt 4 wort – 4 ist das Fehlerbit.

Hinweis 2

Anforderung mit ext anf wort 4 2, die Pumpen mit zweimal ext … 1 und add.

Hinweis 3

Text als Kette von seq und select, das Fehlerbit zuletzt, damit es gewinnt.

Quiz

4 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.

Tag abschließen

  • Übung im Simulator bestanden
  • Quiz mit mindestens 60 % bestanden

Ohne Konto wird der Fortschritt nur in diesem Browser gespeichert.

Fehler in dieser Lektion melden

Zum Melden bitte anmelden. Anmelden

Esc
↑ ↓ wählenEnter öffnen/ öffnet die Suche überall