Binärcode
Markus1984
- sonstiges
2 Vinzenz Mai1 Der Martin
0 Markus19840 Der Martin
0 Markus19840 dedlfix
0 Andreas Pflug
Hallo!
Ich bin sozusagen ein Quereinsteiger und hab vorher mit Codieren eigentlich nichts zu tun gehabt. Jetzt haben wir die Aufgabe bekommen ein Thermometer mit einem möglichst effizienten Binärcode zu codieren in 0.5 Grad schritten von -42.5 Grad bis +51 Grad. Da wir in der Vorlesung keinerlei Beispiele in dieser Art durchgemacht haben bin ich etwas unsicher wie das Ganze aussehn soll. Wäre dankbar wenn mir jemand den zündenden Funken spendieren könnte .).. bis denn
Hallo,
Jetzt haben wir die Aufgabe bekommen ein Thermometer mit einem möglichst effizienten Binärcode zu codieren in 0.5 Grad schritten von -42.5 Grad bis +51 Grad.
Dein abzudeckender Bereich umfasst somit (51 + 42.5) * 2 + 1 = 186 verschiedene Werte.
Nun hast Du bei der Binärdarstellung mit
1 Bit: 2^1 = 2
2 Bit: 2^2 = 4
3 Bit: 2^3 = 8
4 Bit: 2^4 = 16
5 Bit: 2^5 = 32
6 Bit: 2^6 = 64
7 Bit: 2^7 = 128
8 Bit: 2^8 = 256
Möglichkeiten.
Du siehst, dass Du um den geforderten Bereich abdecken zu können, acht Bits benötigst. Ich persönlich würde die Werte analog zu einer vorzeichenbehafteten Ganzzahl codieren (schau Dir dazu den Wikipedia-Artikel Zweierkomplement an). Du bekämst damit einen Wertebereich von -64.0 bis +63.5 Grad, der die Aufgabe wunderbar und speichereffizient abdeckt.
Freundliche Grüße
Vinzenz
Moin!
Ich bin sozusagen ein Quereinsteiger und hab vorher mit Codieren eigentlich nichts zu tun gehabt. Jetzt haben wir die Aufgabe bekommen ein Thermometer mit einem möglichst effizienten Binärcode zu codieren in 0.5 Grad schritten von -42.5 Grad bis +51 Grad.
Da wir in der Vorlesung keinerlei Beispiele in dieser Art durchgemacht haben bin ich etwas unsicher wie das Ganze aussehn soll.
Ich vermute, die Aufgabe ist absichtlich etwas anspruchsvoller gemacht worden, indem die Anforderung mit 0.5°-Schritten dazukam. Denn so hast du zwei Aspekte, über die du dir Gedanken machen musst:
* wie codiere ich die gebrochenen Zahlenwerte?
* wie gehe ich mit negativen Werten um?
Wäre dankbar wenn mir jemand den zündenden Funken spendieren könnte .)..
Tipp: Definiere dir eine Zahlenreihe, die den gewünschten Wert als "Anzahl der 0.5°-Schritte vom Nullpunkt aus" beschreibt. Diese Anzahl der Schritte ist ganzzahlig und kann positiv oder negativ sein. Um diesen Wert zu codieren, bietet sich nun das Zweierkomplement-Verfahren an.
Schönes WE noch,
Martin
wow danke für die schnellen antworten.. ich hoffe ich hab das richtig verstanden:
-0,5° = 11111111
0° = 00000000
0,5 = 00000001
oder bin ich auf dem falschen Weg?
Hi,
ich hoffe ich hab das richtig verstanden:
-64.0 = 10000000
...
-0,5° = 11111111
0° = 00000000
+0,5 = 00000001
...
+63.5 = 01111111
oder bin ich auf dem falschen Weg?
ich glaube nicht, genau so hatte ich mir das auch vorgestellt. Damit ist der darstellbare Zahlenbereich zwar größer als gefordert, aber das dürfte ja wohl niemand stören.
So kannst du den Binärwert als vorzeichenbehaftete Ganzzahl speichern, und zur Ausgabe brauchst du diesen Wert nur durch 2 zu teilen (Vorsicht: keine Ganzzahl-Division).
So long,
Martin
Danke euch beiden. Habt mir sehr viel weiter geholfen..
Ich hoffe ich kann euch mit der Zeit noch mit mehr Anfängerfragen belästigen .)...
bis denn
echo $begrüßung;
-64.0 = 10000000
...-0,5° = 11111111
0° = 00000000
+0,5 = 00000001
...
+63.5 = 01111111oder bin ich auf dem falschen Weg?
ich glaube nicht, genau so hatte ich mir das auch vorgestellt. Damit ist der darstellbare Zahlenbereich zwar größer als gefordert, aber das dürfte ja wohl niemand stören.
So kannst du den Binärwert als vorzeichenbehaftete Ganzzahl speichern, und zur Ausgabe brauchst du diesen Wert nur durch 2 zu teilen (Vorsicht: keine Ganzzahl-Division).
Erweitern könnte man das System noch um einen NULL-Wert. Wenn beispielsweise das Thermometer aus irgenwelchen Gründen keinen Messwert liefern konnte, sollte man für diesen Zeitpunkt nicht den Wert für 0° notieren, denn das ist ja eine gültige Temperatur und verfälschte bei einer Durchschnittsbildung das Ergebnis. Man könnte den Wert für -64.0 als NULL definieren, müsste aber bei Berechnungen immer auf diesen Wert testen und ihn ausschließen oder sonderbehandeln.
echo "$verabschiedung $name";
Hallo,
Hallo!
[...] Jetzt haben wir die Aufgabe bekommen ein Thermometer mit einem möglichst effizienten Binärcode zu codieren in 0.5 Grad schritten von -42.5 Grad bis +51 Grad.
erst mal muss man herausfinden, wieviele
Grad-Schritte es überhaupt gibt:
(51 - (-42.5))*2 + 1 = 188
Von -42.5 bis 51.0 in 0.5-Grad-Schritten
gibt es also 188 verschiedene Werte.
Da 2^7 = 128 und 2^8 = 256,
reicht zur Darstellung eine 8-bit-Binärzahl.
Nun kann man definieren, dass die kleinste
Temperatur -42.5 der Binärzahl 0 (00000000) entsprechen soll,
dann hat der höchste Wert die Nummer 187 oder binär 10111011.
Ist T die Temperatur und N die Binärzahl, dann
gilt demnach
T = -42.5 + 0.5*N bzw. N = 2*(T + 42.5)
Viele Grüße
Andreas