Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Technische Informatik (http://www.informatikerboard.de/board/board.php?boardid=7)
--- Zahlencodes/Darstellung von Informationen (http://www.informatikerboard.de/board/thread.php?threadid=1559)


Geschrieben von deppensido am 23.07.2013 um 23:26:

  Zahlencodes/Darstellung von Informationen

Hallo,

ich habe aus einer alten Klausur eine Multiplechoiceaufgabe zu Zahlencodes/ Darstellung von Informationen gerechnet und würde mich freuen, wenn jemand meine Ergebnisse kontrollieren könnte. Eine Begründung habe ich jeweils angegeben. Weiterhin würde ich mich auch über Tipps freuen, wie ich solche Aufgaben schneller lösen kann, da das noch viel zu lange dauert. Pro Aufgabenblock sind nur 1 - 2 Minuten angedacht, so dass man diese Aufgabe in nur 13 Minuten lösen können sollte. Die Klausur wird so ausgelegt, dass man anhand der zu erreichbaren Punkte die Zeit sieht, die man zur Verfügung hat.

Vielen Dank im voraus.

Grüße



Geschrieben von eulerscheZahl am 24.07.2013 um 08:40:

 

b) ist falsch. Und aus deiner Erklärung schließe ich, dass du es zudem umständlich gemacht hast: 4 Binärziffern ergeben eine Hexziffer, die Umwandlung zwischen diesen beiden Zahlensystemen ist sehr simpel:
[latex]a_{16} = 10_{10} = 1010_2[/latex] und [latex]5_{16} = 5_{10} = 0101_2[/latex] (führende 0en nicht vergessen)
Du kannst die Ziffern also einzeln ins Dualsystem umrechnen und dann zusammensetzen zu 10100101
Zur Kontrolle: B=(000)11011

c) hier bin ich mir unsicher: es muss zwar 0 herauskommen, aber gleichzeitig kommt es zum Überlauf, was immer ein schlechtes Zeichen ist, ob man das Ergebnis noch verwerten kann.

g) Die Zahl ist positiv, also Vorzeichenbit = 0
[latex]10,01_2 = 1,001 \cdot 2^1[/latex], da das Komma um 1 nach links gerutscht wurde.
Exponent: 01111111 + 00000001(wegen 2^1) = 10000000
Mantisse: Aufgrund der Normalisierung startet die Zahl mit einer 1. Da man das weiß, kann man sie auch weglassen (zu Gunsten der Präzision, da jetzt 1 Bit mehr für den Rest der Zahl zur Verfügung steht).
Es bleibt also: 001 [hier kommen noch 20 =en].

Umrechner (benötigt Java): Link

i) p1 = 1 XOR 0 XOR 0 = 1 (passt)
p2 = 1 XOR 0 XOR 1 = 0 (passt)
p3 = 1 XOR 0 XOR 1 = 0 (passt nicht)

Ich gehe mal davon aus, dass nur 1 Bit fehlerhaft ist, dabei kann es natürlich zur Fehlkorrektur kommen, ist aber unwahrscheinlich.
x1 kommt in allen 3 Prüfbits vor, wenn das fehlerhaft wäre, würden p1,p2,p3 alle falsch sein -> x1 ist richtig
x2, x3, x4 sind jeweils in 2 Prüfbits, da aber nur eines nicht stimmt, kann es daran auch nicht liegen (bei 1 Bitfehler).
Bleibt nur die Möglichkeit, dass p3 falsch ist.

Somit: Fehlerkorrektur des Prüfbits ist möglich, wie gezeigt. Das richtige Codewort hast du ja selbst schon herausbekommen.
"Syndrom" habe ich noch nie gehört, dazu kann ich nichts sagen

Wenn ich zu einer Aufgabe nichts geschrieben habe, dann weil ich mit deiner Antwort einverstanden bin.



Geschrieben von deppensido am 24.07.2013 um 14:29:

 

hallo,

danke für die Hilfe. Ich glaub, ich hab es verstanden. Sollten sich doch noch
Fragen ergeben, meld ich mich nochmal.

Grüße



Geschrieben von adramelec am 24.07.2013 um 22:56:

 

c ist mit 0 richtig.

Solang wir nur x und y mit je 4 bits haben, muss 0 stimmen.
Denn es wandert ja dann weiter, wenn wir nichts haben mit dem wir das abfangen, fällts unter dem Tisch. Blöd, aber ist so. (Das Prinzip ist ja bei einem Zähler genau so :-) Da verlasse nwir uns ja auch drauf, dass gewisse Dinge wieder 0 werden, wegen dem Überlauf)

(So zumindestens meine Begründung großes Grinsen )



Geschrieben von Karlito am 25.07.2013 um 00:17:

 

Hallo,

mal eine genauere Erklärung: Rechnet man nur mit Ganzzahlen ohne Vorzeichen, so ist der Übertrag auf das erste nicht mehr darstellbare Bit (Carry) ein Überlauf. Rechnet man mit dem Zweierkomplement, so tritt ein Überlauf nur dann auf, wenn sich die höchsten beiden Überlaufbits unterscheiden (Overflow). Siehe Anhang.

VG,

Karlito



Geschrieben von deppensido am 25.07.2013 um 11:46:

 

aber es kommt doch bei allen Rechnungen das richtige Ergebnis raus?
Sind die Zweierkomplementzahlen mit Overflow dann keine
gültige Zweierkomplementzahlen mehr?



Geschrieben von Karlito am 25.07.2013 um 12:52:

 

Hallo,

nur beim ersten handelt es sich um ein "richtiges" Ergebnis. Der Wertebereich von 4-Bit Zahlen im Zweierkomplement geht von -8 bis 7. Wenn du dir das letzte Beispiel anschaust ist das Ergebnis Binär auch nicht korrekt, da das Vorzeichenbit plötzlich kippt und +7 herauskommt (die Überträge sind nicht Teil des Ergebnisses, sie werden nur für die Erkennung von Überläufen gemutzt).

VG,

Karlito



Geschrieben von deppensido am 25.07.2013 um 17:58:

 

irgendwie versteh ich zu den Gleitkommazahlen noch etwas nicht verstanden. Es geht hauptsächlich um die Berechnung des Exponenten. Die Normalisierung hab ich soweit verstanden.

Vielen Dank schon mal



Geschrieben von eulerscheZahl am 26.07.2013 um 09:02:

 

[latex]0,5_{10} = 0,1_2[/latex]. Der Ausdruck soll nun so umgeschrieben werden, dass das Komma nach der ersten Ziffer steht: [latex]1 \cdot 2^{\textcolor{red}{-1}}[/latex]. Ist klar, warum das das Selbe ist wie oben? Die Potenz des Faktors, mit dem korrigiert werden muss, fließt in die Berechnung des Exponenten mit ein: 127(für 8 Bit in Exponent) + (-1)(eben errechnet) = 127 - 1 = 126 = 01111110.
Die Erklärung unterhalb des Exponenten verstehe ich auch nicht, aber zumindest erhalte ich das selbe Bitmuster.

Für die Umrechnung von 10^6 brauche ich auch ein Wenig: 10^6 = 5^6 * 2^6.
2^6 sind einfach 6 0en am Ende. Bei 5^6 wirst du nicht ums Rechnen herumkommen. Eventuell kannst du die Multiplikation im Dualsystem durchführen: 101 * 101 * 101 * ... . Ich habe dafür knapp 2 Minuten gebraucht.
[latex]11110100001001000000 = 1,1110100001001000000 \cdot 2^{\textcolor{red}{19}}[/latex]
127+19 = 146, ins Binärsystem übertragen ist das der Exponent



Geschrieben von deppensido am 26.07.2013 um 18:23:

 

hallo,

also bei 0,5 = 0,1 muss ich das Komma um 1 nach rechts schieben (um 1,0 zu haben) und hab deshalb den Exponent 127 + (-1) = 126 ?

und bei 11110100001001000000 muss ich das Komma um 19 Stellen nach links geschoben werden (um 1,1110100001001000000 zu haben) und deshalb den Exponent 127 + 19 = 146 ?

Wenn das so funktioniert hab ich's wohl verstanden.
Danke für die Hilfe!



Geschrieben von eulerscheZahl am 26.07.2013 um 20:34:

 

Ja, du hast es verstanden, herzlichen Glückwunsch smile


Forensoftware: Burning Board, entwickelt von WoltLab GmbH