493
Bearbeitungen
Ngb (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Ngb (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung Markierung: Manuelle Zurücksetzung |
||
| (4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 99: | Zeile 99: | ||
== Dualzahlen in Dezimalzahlen umrechnen == | == Dualzahlen in Dezimalzahlen umrechnen == | ||
Das Umrechnen von Dualzahlen in Dezimalzahlen ist auf dem Papier leicht zu machen. Die Formel zur Umrechnung hast Du bereits kennengelernt: | |||
<center><math>(1100111)_2 = 1\cdot 2^6 + 1\cdot 2^5 + 0\cdot 2^4 + 0\cdot 2^3 + 1\cdot 2^2 + | |||
1\cdot 2^1 + 1\cdot 2^0 = (103)_{10}</math></center> | |||
{{Aufgabe:Start}} | |||
Rechne die Zahlen ins Dezimalsystem um: | |||
# <math>(1101)_{2}</math> | |||
# <math>(101101)_{2}</math> | |||
# <math>(1000)_{2}</math> | |||
{{Aufgabe:End}} | |||
{{Lösung:Start}} | |||
# <math>(1101)_{2} = (13)_{10}</math> | |||
# <math>(101101)_{2} = (45)_{10}</math> | |||
# <math>(1000)_{2} = (8)_{10}</math> | |||
{{Lösung:End}} | |||
Die Umsetzung in {{Scratch}} ist allerdings etwas schwieriger, da es keine Potenzieren-Operation gibt. Die Rechnung <math>2^n</math> lässt sich daher nicht so einfach lösen. | |||
{{Aufgabe:Start}} | |||
Entwickle ein {{Scratch}}-Programm, dass eine (positive ganze) Zahl <math>b</math> mit einem (positive ganzen) Exponenten <math>e</math> potenziert. Also die Aufgabe <math>b^e</math> löst. | |||
Erstelle dafür in Deinem bestehenden Programm von oben eine weitere Figur, in der Du arbeitest. | |||
{{Aufgabe:End}} | |||
{{Tipp:Start}} | |||
Mach Dir klar, wie eine Potenz durch Additionen berechnet werden kann. | |||
Beachte auch den Sonderfall <math>e = 0</math>, denn dann ist das Ergebnis immer <math>1</math>! | |||
Die Umsetzung in {{Scratch}} erfolgt mit einer Zählschleife. | |||
{{Tipp:End}} | |||
{{Lösung:Start}} | |||
<scratchblocks> | |||
Wenn diese Figur angeklickt wird :: events hat | |||
frage [Gib eine Basis ein.] und warte | |||
setze [b v] auf (Antwort) | |||
frage [Gib einen Exponenten ein.] und warte | |||
setze [e v] auf (Antwort) | |||
setze [potenz v] auf (1) | |||
wiederhole (e) mal | |||
setze [potenz v] auf ((potenz) * (b)) | |||
end | |||
sage (potenz) | |||
</scratchblocks> | |||
{{Lösung:End}} | |||
{{Aufgabe:Start}} | |||
Entwickle ein {{Scratch}}-Programm zur Umrechnung einer Dualzahl in eine Dezimalzahl. | |||
Nutze dazu Dein Potenzieren-Programm von oben. | |||
Dieses Programm ist deutlich komplexer, als das zur Umrechnung einer Dezimalzahl mit dem Moduloverfahren. Scheue Dich also nicht, die Tipps anzusehen, falls Du nicht weiter kommst. | |||
{{Aufgabe:End}} | |||
{{Tipp:Start}} | |||
Die eingegebene Dualzahl ist wieder keine Zahl, sondern ein Text mit einzelnen Zeichen, die entweder <code>0</code> oder <code>1</code> sind. Das Ziel ist es, die Dualzahl Zeichen für Zeichen ''von rechts nach links'' durchzugehen und bei einer <code>1</code> die entsprechende Potenz von 2 auf das Ergebnis zu addieren. | |||
Dazu musst Du | |||
* eine Zählvariable (z.B. <code>i</code>) erstellen, die auf 0 gesetzt wird, | |||
* eine Schleife starten, die so oft durchläuft, wie die Binärzahl Zeichen hat (Länge der Binärzahl), | |||
** auf das <code>i</code>-te Zeichen von rechts zugreifen (also das Zeichen an Stelle "Länge der Binärzahl minus <code>i</code>"), | |||
** wenn das Zeichen eine <code>1</code> ist, | |||
*** die Potenz <math>2^i</math> berechnen, | |||
*** die Potenz auf das Ergebnis addieren. | |||
** <code>i</code> um 1 erhöhen. | |||
{{Tipp:End}} | |||
{{Lösung:Start}} | |||
<scratchblocks> | |||
Wenn diese Figur angeklickt wird :: events hat | |||
frage [Gib eine Binärzahl ein.] und warte | |||
setze [binaer v] auf (Antwort) | |||
setze [dezimal v] auf (1) | |||
setze [i v] auf (0) | |||
wiederhole (Länge von (binaer)) mal | |||
falls <(Zeichen ((Länge von (binaer)) - (i)) von (binaer)) = (1)> dann | |||
setze [potenz v] auf (1) | |||
wiederhole (i) mal | |||
setze [potenz v] auf ((potenz) * (2)) | |||
end | |||
ändere [dezimal v] um (pow) | |||
end | |||
ändere [i v] um (1) | |||
end | |||
sage (dezimal) | |||
</scratchblocks> | |||
{{Lösung:End}} | |||