Zum Inhalt springen

Aufgabe 1 - Zahlendarstellungen

Ergänzen Sie die nachfolgende Tabelle in der gegebenen Aufgabenstellung um die fehlenden Darstellungsformen für die vorzeichenbehafteten ganzen Zahlen A und –A mit einer Breite von zwei Byte durch ihre Hexadezimal- bzw. Dezimalzahlwerte (HEX bzw. DEZ). Der Offset bei der offsetbinären Darstellung beträgt 7FFFH.

Dezimalzahl (DEZ) Darstellung Vorzeichen Betrag (HEX) Zweierkomplementdarstellung (HEX) Offsetbinäre Darstellung (HEX)
A 18.311
–A

Stellen Sie Ihren Rechenweg bei der Ermittlung der fehlenden Werte ausführlich dar.

10 Pkt.

Im Speicher eines Mikroprozessors befinden sich auf den Speicheradressen 0000H bis 0003H die vier Bytes einer Single-Precision-Gleitkommazahl nach IEEE754 entsprechend der nachfolgenden Tabelle. Die Bytes sind abweichend vom Studienheft TIM01 hier im Little-Endian-Format abgespeichert (hier niederwertigstes Byte auf niederwertigster Adresse!). Ermitteln Sie den Dezimalwert der abgespeicherten Gleitkommazahl. Legen Sie Ihren Berechnungsweg ausführlich dar.

Adresse Byte Belegung
0000H B8H m7 ... m0
0001H DEH m15 ... m8
0002H 6AH e0, m22 ... m16
0003H C3H S, e7 ... e1

15 Pkt.

Σ 25 Pkt.

Die Tabelle lässt sich wie folgt vervollständigen:

Dezimalzahl (DEZ) Darstellung Vorzeichen Betrag (HEX) Zweierkomplementdarstellung (HEX) Offsetbinäre Darstellung (HEX)
A 18.311 4787H 4787H 0C786H
-A -18.311 0C787H 0B879H 3878H

Tabelle 1.1: Darstellungen von A und -A bei einer Breite von 16 Bit (eigene Berechnung).

Zuerst wird der Dezimalwert 18.311 durch 16 geteilt. Die dabei entstehenden Reste bilden die einzelnen Hexadezimalstellen.

18.311 : 16 = 1.144 Rest 7
1.144 : 16 = 71 Rest 8
71 : 16 = 4 Rest 7
4 : 16 = 0 Rest 4

Die Reste werden von unten nach oben gelesen. Damit ergibt sich:

18.311 (DEZ) = 4787H
= 0100 0111 1000 0111 (BIN)

Bei einer Breite von 16 Bit wird das höchstwertige Bit als Vorzeichenbit verwendet. Eine 0 steht für eine positive Zahl und eine 1 für eine negative Zahl. Die übrigen 15 Bit enthalten den Betrag.

Der Betrag 18.311 wird in den unteren 15 Bit so dargestellt:

100 0111 1000 0111

Für A wird eine 0 als Vorzeichenbit ergänzt:

0 | 100 0111 1000 0111 = 0100 0111 1000 0111 = 4787H

Für -A wird das Vorzeichenbit auf 1 gesetzt:

1 | 100 0111 1000 0111 = 1100 0111 1000 0111 = 0C787H

Die führende 0 bei 0C787H gehört nicht zur Wortbreite. Sie macht nur deutlich, dass es sich bei dem mit C beginnenden Wert um eine Hexadezimalzahl handelt.

Da A positiv ist, bleibt die Darstellung unverändert:

A = 0100 0111 1000 0111 = 4787H

Für -A werden zuerst alle Bitstellen von A umgekehrt. Danach wird 1 addiert.

A: 0100 0111 1000 0111
Bitstellen umkehren: 1011 1000 0111 1000 = 0B878H
1 addieren: 1011 1000 0111 1001 = 0B879H

Als Kontrolle kann der Wert auch von 2 hoch 16 abgezogen werden:

65.536 - 18.311 = 47.225 = 0B879H

Der vorgegebene Offset beträgt:

7FFFH = 32.767 (DEZ)

Für die offsetbinäre Darstellung wird der Offset zum jeweiligen Dezimalwert addiert.

Für A ergibt sich:

18.311 + 32.767 = 51.078 = 0C786H
4787H + 7FFFH = 0C786H

Für -A ergibt sich:

-18.311 + 32.767 = 14.456 = 3878H
7FFFH - 4787H = 3878H

Da die Bytes im Little-Endian-Format gespeichert sind, steht das niederwertigste Byte an der kleinsten Adresse. Für das vollständige 32-Bit-Wort werden die Bytes deshalb in umgekehrter Reihenfolge zusammengesetzt.

Adresse Hexadezimal Binärdarstellung
0000H B8H 1011 1000
0001H DEH 1101 1110
0002H 6AH 0110 1010
0003H C3H 1100 0011

Tabelle 1.2: Binärdarstellung der gespeicherten Bytes (eigene Berechnung).

Das zusammengesetzte 32-Bit-Wort lautet:

C36ADEB8H
1100 0011 0110 1010 1101 1110 1011 1000

Eine Single-Precision-Gleitkommazahl besteht aus einem Vorzeichenbit, acht Exponentenbits und 23 Mantissenbits.

1 | 1000 0110 | 110 1010 1101 1110 1011 1000
S | Exponent | Mantisse

Das Vorzeichenbit ist 1. Die gespeicherte Zahl ist deshalb negativ.

Der gespeicherte Exponent lautet:

1000 0110 (BIN)
= 2^7 + 2^2 + 2^1
= 128 + 4 + 2
= 134 (DEZ)

Bei Single Precision beträgt der Bias 127. Der tatsächliche Exponent ist damit:

e = 134 - 127 = 7

Die 23 Mantissenbits lauten:

110 1010 1101 1110 1011 1000

Da es sich um eine normalisierte Zahl handelt, wird vor der Mantisse eine führende 1 ergänzt:

1,11010101101111010111000 (BIN)

Mit dem Vorzeichenbit S = 1 und dem Exponenten e = 7 ergibt sich:

Z = (-1)^S · Mantisse · 2^e
Z = (-1)^1 · 1,11010101101111010111000 · 2^7

Durch die Multiplikation mit 2 hoch 7 wird das Binärkomma um sieben Stellen nach rechts verschoben:

Z = -1110 1010,1101 1110 1011 1000 (BIN)

Der ganzzahlige Anteil beträgt:

1110 1010 (BIN)
= 2^7 + 2^6 + 2^5 + 2^3 + 2^1
= 128 + 64 + 32 + 8 + 2
= 234

Beim Nachkommaanteil werden nur die gesetzten Bitstellen addiert:

2^-1 + 2^-2 + 2^-4 + 2^-5 + 2^-6 + 2^-7
+ 2^-9 + 2^-11 + 2^-12 + 2^-13
= 0,8699951171875

Mit dem negativen Vorzeichen ergibt sich der gesuchte Dezimalwert:

Z = -234,8699951171875

Einsendeaufgabe

B-MRT01XX

Felix Spohn / 30043301